调整PHP-FPM进程池配置
通过优化进程池参数,确保PHP-FPM启动时有足够的进程处理请求,避免因进程不足导致的延迟。关键参数包括:
优化Systemd服务配置
若使用Systemd管理PHP-FPM,可通过修改服务文件减少启动延迟:
/etc/systemd/system/php7.x-fpm.service.d/override.conf(或直接编辑服务文件)的[Service]部分添加:ExecStartPre=/bin/sleep 5(启动前延迟5秒,避免瞬时高负载);StartLimitIntervalSec=0(禁用启动限制,防止服务启动时的速率限制);StartLimitBurst=0(设置启动限制突发次数为0)。sudo systemctl daemon-reload重新加载配置并重启PHP-FPM。使用合适的进程管理模式
根据应用场景选择进程管理模式,减少不必要的进程启动开销:
pm.start_servers数量的进程,根据负载动态调整空闲进程数(适合大多数场景);pm = ondemand),适合流量波动大但不需要持续运行的场景(需设置pm.process_idle_timeout回收空闲进程,如10秒);pm = lazy),进一步减少启动时的进程创建开销(但可能增加首次请求延迟)。启用并配置OPcache
OPcache可缓存PHP脚本编译后的字节码,避免每次请求都重新编译,显著提升PHP执行速度。配置步骤:
sudo apt install php7.x-opcache);php.ini(或/etc/php/7.x/fpm/php.ini)中启用:zend_extension=opcache.so;opcache.enable=1;opcache.memory_consumption=128(分配128MB内存给OPcache)、opcache.interned_strings_buffer=8(内部字符串缓冲区大小)、opcache.max_accelerated_files=4000(最多缓存4000个脚本文件)、opcache.revalidate_freq=60(每60秒检查脚本是否更新)。优化系统内核参数
调整Linux内核参数,提升PHP-FPM的IO和网络性能:
sudo sysctl -w fs.file-max=100000;sudo sysctl -w vm.swappiness=10;sudo sysctl -w net.core.somaxconn=4096。/etc/sysctl.conf以实现永久生效。使用Unix域Socket通信
若Web服务器(如Nginx)与PHP-FPM在同一台服务器上,建议使用Unix域Socket(而非TCP)通信,减少网络开销。配置示例:
fastcgi_pass unix:/run/php/php7.x-fpm.sock;;www.conf中:listen = /run/php/php7.x-fpm.sock(需确保Socket文件路径一致且权限正确)。监控与日志分析
通过监控工具(如htop、top、systemd-cgtop)实时查看PHP-FPM的CPU、内存使用情况,识别资源瓶颈;启用慢日志定位执行慢的脚本:
www.conf中添加:request_slowlog_timeout = 10s(超过10秒的请求记录为慢请求);slowlog = /var/log/php-fpm/www-slow.log(慢日志路径)。