一、优化PHP-FPM进程管理配置
进程管理是php-fpm性能的核心,需根据服务器负载选择合适的模式并调整参数:
static模式(固定子进程数)适合负载稳定的生产环境,资源利用率最高;dynamic模式(动态调整)适合负载波动的场景;ondemand模式(按需启动)适合请求量小的环境(如测试服务器)。/etc/php/{version}/fpm/pool.d/www.conf中设置:pm.max_children(最大子进程数)需根据服务器内存计算(如可用内存/单个进程内存,单个进程内存可通过ps aux | grep php-fpm估算);pm.start_servers(启动时的进程数)建议设为pm.max_children的1/4~1/2;pm.min_spare_servers(最小空闲进程数)和pm.max_spare_servers(最大空闲进程数)分别设置为pm.start_servers的1~2倍,避免频繁创建/销毁进程;pm.max_requests(每个子进程处理的最大请求数)建议设为500~1000,防止内存泄漏。二、启用并优化OPcache加速
OPcache可缓存PHP脚本编译后的字节码,避免重复编译,显著提升执行效率:
sudo apt install php-opcache安装,编辑php.ini(位于/etc/php/{version}/fpm/php.ini)取消以下行注释并调整参数:zend_extension=opcache.so(启用扩展)、opcache.enable=1(开启缓存)、opcache.memory_consumption=128(缓存内存大小,根据服务器内存调整,如128MB~256MB)、opcache.max_accelerated_files=4000(缓存的脚本文件数,建议设为项目中PHP文件总数的1.5倍)、opcache.revalidate_freq=60(缓存验证频率,单位秒,生产环境可设为60~300)、opcache.fast_shutdown=1(快速关闭,提升内存回收效率)。opcache.jit=1(启用JIT编译)和opcache.jit_buffer_size=64M(JIT缓冲区大小),进一步提升性能。三、调整系统与网络配置
fastcgi_pass从127.0.0.1:9000改为unix:/run/php/php{version}-fpm.sock,减少网络传输开销(仅适用于Web服务器与php-fpm在同一服务器的场景)。ulimit -n 65535临时设置,或在/etc/security/limits.conf中永久添加* soft nofile 65535、* hard nofile 65535。/etc/sysctl.conf,添加net.core.somaxconn=65535(增加TCP连接队列长度)、fs.file-max=100000(增加系统最大文件描述符数),然后运行sudo sysctl -p生效。四、优化PHP与代码层面
php.ini中设置memory_limit(每个进程内存限制,如256M~512M,根据应用需求调整)、max_execution_time(脚本最大执行时间,如30~60秒,避免长时间阻塞)、upload_max_filesize和post_max_size(上传文件大小限制,根据业务需求调整)。serialize)。sudo systemctl restart php{version}-fpm定期重启(如每周一次),释放内存泄漏的资源。五、监控与持续调优
htop(查看CPU/内存使用率)、vmstat 1(查看系统负载、IO等待)、iostat -x 1(查看磁盘IO)、php-fpm -t(测试配置文件语法)、sudo systemctl status php{version}-fpm(查看服务状态)等工具,实时监控服务器状态。www.conf中启用慢日志:slowlog = /var/log/php-fpm/www-slow.log、request_slowlog_timeout = 10s(超过10秒的请求记录到慢日志),通过分析慢日志找出性能瓶颈(如慢查询、复杂逻辑)。