nginx优化


1、nginx打开文件数限制

修改nginx.conf

  1. worker_rlimit_nofile 51200;
  2. events {
  3. worker_connections 51200;
  4. }

之后重载nginx:service nginx reload

2、Linux系统文件限制

我们先看一下系统的限制打开文件数
执行:ulimit –n
如果太低的话可以进行修改,执行:vim /etc/security/limits.conf
更改参数:

  1. soft nofile 65535
  2. hard nofile 65535
  3. soft nproc 65535
  4. hard nproc 65535

注:系统限制可以随便改,我只要比nginx的打开文件数大就好。

3、nginx的fastcgi连接时间太短

一般nginx响应php,都是通过FastCGI接口来调用,所以fastcgi参数配置很重要,当HTTP服务器每次遇到动态程序时,可以将其直接交付给FastCGI进程来执行,然后将得到的结果返回给浏览器,而很多php的网页都是采用动态程序。所以fastcgi的配置,也起的至关重要的作用。所以这是一个优化不可缺少的一部分。
修改nginx.conf
http{}中修改内容:

  1. fastcgi_connect_timeout 300;
  2. fastcgi_send_timeout 300;
  3. fastcgi_read_timeout 300;

之后重载nginx:service nginx reload

PHP优化


1、查看php-fpm的工作模式

打开/usr/local/php/etc/php-fpm.d下的www.conf文件,我们可以看到如下配置:
pm = dynamic
表示php启用的动态模式,默认是动态模式,还有静态模式(static)
其他参数分析:
pm.max_children 表示静态下最大线程数,静态模式下只有该参数有效
pm.start_servers 表示动态下启动时的线程数,该参数大于pm.min_spare_servers,小于pm.max_spare_servers,默认值是(最大-最小)/2
pm.min_spare_servers 表示动态下最小空闲线程数
pm.max_spare_servers 表示动态下最大空闲线程数

模式比较:
静态模式的话,比较适合一些内存比较大一点的服务器,8G及以上的,因为对于比较大内存的服务器来说,设置为静态的话会提高效率。

动态模式适合小内存机器,灵活分配进程,省内存。可以让php自动增加和减少进程数,不过动态创建回收进程对服务器也是一种消耗。

2、根据自己服务器的内存大小修改适合的模式

按理来说php的最大的进程数,大概是本地内存/40,因为也要考虑系统占用内存的的这种情况,我们不能直接把除处理的结果,当成的最大进程数。8G内存的,所以按理来说是,最大的php进程数是200左右。但是考虑到内存泄漏的问题,我们可以设置为120-150左右
再查看进程数
netstat -anpo | grep php-fpm | wc -l