PHP-FPM是一种常用的PHP进程管理器,默认情况下,PHP-FPM只启动少量进程来处理请求,调优PHP-FPM的配置,可以增加并发数量,提升负载能力
首先找到配置文件php-fpm.conf,大多的php-fpm.conf中会存在“include=/etc/php/7.0/fpm/pool.d/*.conf”,找到pool.d目录下的www.conf文件
重点修改以下配置
pm = dynamic #动态进程
pm.max_children = 50 #最大进程数
pm.start_servers = 20 #启动时的进程数
pm.min_spare_servers = 5 #空闲进程的最小数量
pm.max_spare_servers = 10 #空闲进程的最大数量
pm = dynamic
这个参数控制PHP-FPM进程创建,dynamic表示动态创建,static表示静态
静态的好处是能节省创建PHP-FPM进程的开销
pm.max_children = 50
这个参数表示最大创建的PHP-FPM进程数,它控制着PHP-FPM进程池的大小和性能表现
太小会导致无法处理足够的请求
太大容易导致系统资源不足,间接导致进程池崩溃或系统负载过高
所以这个参数比较重要,需要根据实际情况调整
可以通过下面的计算获得:
pm.max_children = 专用于Web服务器的总RAM /最大子进程大小
一般情况下一个PHP进程占10M-30M的内存,特殊情况会达到80M-100M
pm.start_servers = 20
启动时的进程数,默认为 (最小空闲数+最大空闲数)/2
注意事项:
start_servers(启动时的进程数)不能高于max_spare_servers(空闲最大进程数)
max_spare_servers(空闲最大进程数)不能高于max_children(最大进程数)
如果不遵循上面的规则,修改配置后,会导致重启PHP-FPM服务失败
查看原因可得到提示:
pm.start_servers(..) must not be less than pm.min_spare_servers(..) and not greater than pm.max_spare_servers(..)
优化PHP配置
除了调整PHP-FPM的相关参数,我们还可以优化PHP的一些配置,以进一步提高性能。以下是一些常见的优化项:
提高PHP缓存的大小
opcache.memory_consumption = 256
提高PHP脚本解析的缓存大小
max_execution_time = 30
优化PHP内存管理
memory_limit = 128M
启用PHP FastCGI缓冲
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;