【原创】Nginx+PHP-FPM优化技巧总结

本文总结了Nginx+PHP-FPM的性能优化策略,包括使用Unix域Socket通信,调整backlog参数,增加sock文件和php-fpm实例数,优化php-fpm的进程数、最大处理请求数和最长执行时间,以及高CPU使用率的排查方法,如慢日志分析和strace跟踪。此外,还介绍了PHP加速器如APC和xcache的使用,以及php程序性能监控的方法。
摘要由CSDN通过智能技术生成
php-fpm的安装很简单,参见 PHP(PHP-FPM)手动编译安装。下面主要讨论下如何提高Nginx+Php-fpm的性能。

1.Unix域Socket通信

之前简单介绍过Unix Domain Socket这种通信方式,参见: Nginx+PHP-FPM的域Socket配置方法

Unix域Socket因为不走网络,的确可以提高Nginx和php-fpm通信的性能,但在高并发时会不稳定。
Nginx会频繁报错:
     connect() to unix:/dev/shm/php-fcgi.sock failed (11: Resource temporarily unavailable) while connecting to upstream

可以通过下面两种方式提高稳定性:
1)调高nginx和php-fpm中的backlog
     配置方法为:在nginx配置文件中这个域名的server下,在listen 80后面添加default backlog=1024。
     同时配置php-fpm.conf中的listen.backlog为1024,默认为128。
2)增加sock文件和php-fpm实例数
     再新建一个sock文件,在Nginx中通过upstream模块将请求负载均衡到两个sock文件背后的两套php-fpm实例上。



2.php-fpm参数调优

2.1进程数

php-fpm初始/空闲/最大worker进程数
     pm.max_children = 300
     pm.start_servers = 20
     pm.min_spare_servers = 5
     pm.max_spare_servers = 35

2.2最大处理请求数

最大处理请求数是指一个php-fpm的worker进程在处理多少个请求后就终止掉,master进程会重新respawn一个新的。
这个配置的主要目的是避免php解释器或程序引用的第三方库造成的内存泄露。
     pm.max_requests = 10240

2.3最长执行时间

最大执行时间在php.ini和php-fpm.conf里都可以配置,配置项分别为 max_execution_time和request_terminate_timeout。
其作用及其影响参见: Nginx中502和504错误详解



3.php-fpm的高CPU使用率排查方法

3.1CPU使用率监控方法

1)top命令
直接执行top命令后,输入1就可以看到各个核心的CPU使用率。而且通过top -d 0.1可以缩短采样时间。
下面的sar貌似最短只能是1秒。

2)sar命令
sar和iostat命令的安装:
     sysstat.x86_64 : The sar and iostat system monitoring commands
     yum install -y sysstat.x86_64

执行sar -P ALL 1 100。-P ALL表示监控所有核心,1表示每1秒采集,100表示采集100次。
输出结果如下:
CPU     %user     %nice   %system   %iowait    %steal     %idle
all     85.54      0.00      5.69      0.00      0.00      8.76
   0     74.75      0.00     25.25      0.00      0.00      0.00
   1     98.00      0.00      2.00      0.00      0.00      0.00
   2     89.22      0.00      3.92      0.00      0.00      6.86
   3     91.00      0.00      2.00      0.00      0.00      7.00
   4     75.00      0.00      9.00      0.00      0.00     16.00
   5     94.95      0.00      5.05      0.00      0.00      0.00
   6     95.00      0.00      4.00      0.00      0.00      1.00
   7     87.88      0.00      4.04      0.00      0.00      8.08
   8     93.94      0.00      3.03      0.00      0.00      3.03
   9     88.00      0.00      3.00      0.00      0.00      9.00
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值