在Debian LNMP环境中优化PHP-FPM可从以下方面入手:
进程管理优化
dynamic
模式(动态调整进程数),适合流量波动场景;static
模式(固定进程数)适合内存充足、负载稳定的场景。pm.max_children
:根据服务器内存和CPU计算(如总内存-系统预留-其他服务占用
)÷单个进程内存,建议预留20%冗余。pm.start_servers
:设置为CPU核心数×2,快速响应初始请求。pm.min/max_spare_servers
:分别设置为CPU核心数和CPU核心数×4,平衡资源利用率。pm.max_requests
:设置为500-1000,防止内存泄漏,定期重启子进程。性能参数调优
request_terminate_timeout
:根据业务类型设置(API建议10-30秒,后台任务可更高),避免长时间阻塞。request_slowlog_timeout
:设置为3-5秒,记录慢请求日志,便于排查性能瓶颈。listen_backlog
:与系统net.core.somaxconn
参数保持一致(建议2048),避免连接队列溢出。资源限制与权限
php-fpm.conf
中设置rlimit_files=65535
,并修改系统级限制(/etc/security/limits.conf
和systemd
服务配置)。memory_limit
参数调整单个进程内存(如普通请求128M,大内存任务256M)。日志与监控
slowlog
路径并分析慢查询,优化低效代码。pm.status_path
配置状态页面(如/status
),使用工具(如php-fpm status
)实时查看进程状态。其他优化
php.ini
中开启并配置缓存大小(如128-256M),显著提升PHP执行效率。fastcgi_pass
指向正确socket,调整fastcgi_buffers
(建议8-16块,每块16-32K)提升传输效率。配置示例(动态模式,4核8GB服务器):
[www]
pm = dynamic
pm.max_children = 60
pm.start_servers = 8
pm.min_spare_servers = 4
pm.max_spare_servers = 16
pm.max_requests = 1000
request_terminate_timeout = 30s
request_slowlog_timeout = 3s
slowlog = /var/log/php-fpm/slow.log
listen = /run/php/php7.4-fpm.sock
listen.owner = www-data
listen.group = www-data
rlimit_files = 65535
优化后需重启PHP-FPM服务:sudo systemctl restart php7.4-fpm
,并通过监控工具(如htop
、Prometheus
)验证效果。