PHP-FPM (FastCGI Process Manager) 是LNMP架构中处理PHP请求的核心组件,合理的配置能显著提升网站性能和稳定性。以下是一些关键的优化配置建议:
pm = dynamic # 推荐使用动态进程管理
pm.max_children = 50 # 最大子进程数
pm.start_servers = 10 # 启动时的进程数
pm.min_spare_servers = 5 # 最小空闲进程数
pm.max_spare_servers = 15 # 最大空闲进程数
pm.max_requests = 500 # 每个子进程处理多少请求后重启,防止内存泄漏
request_terminate_timeout = 30s # 单个请求超时时间
request_slowlog_timeout = 5s # 慢请求日志记录阈值
rlimit_files = 65535 # 文件描述符限制
rlimit_core = unlimited # 核心文件大小限制
pm.max_children = 20-30
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 10
pm.max_children = 50-80
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_children = 100-200
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 30
使用Unix Socket替代TCP (减少网络开销)
listen = /var/run/php-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
启用OPcache (显著提升PHP性能)
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
调整PHP执行限制
memory_limit = 128M # 根据应用需求调整
max_execution_time = 30
upload_max_filesize = 20M
post_max_size = 22M
使用以下命令监控PHP-FPM状态:
systemctl status php-fpm
php-fpm -t # 测试配置文件
安装状态页面监控:
pm.status_path = /status
ping.path = /ping
使用工具如htop
、glances
或nmon
监控系统资源使用情况
502 Bad Gateway错误:
pm.max_children
/var/log/php-fpm.log
内存不足:
pm.max_children
memory_limit
性能瓶颈:
以上配置需要根据实际服务器负载和应用特性进行调整,建议每次只修改一个参数并观察效果后再进行下一步优化。