优化Linux上的PHP-FPM(FastCGI Process Manager)配置文件可以显著提高PHP应用程序的性能。以下是一些常见的优化建议:
编辑/etc/php/7.x/fpm/pool.d/www.conf文件(根据你的PHP版本调整路径):
pm:选择进程管理方式,常用的是dynamic或ondemand。
pm = dynamic
pm.max_children:最大子进程数,根据服务器的内存和应用程序的需求设置。
pm.max_children = 50
pm.start_servers:启动时的子进程数。
pm.start_servers = 5
pm.min_spare_servers:最小空闲子进程数。
pm.min_spare_servers = 5
pm.max_spare_servers:最大空闲子进程数。
pm.max_spare_servers = 35
request_terminate_timeout = 30s
memory_limit = 128M
slowlog = /var/log/php-fpm/www-slow.log
request_slowlog_timeout = 10s
error_log = /var/log/php-fpm/error.log
notice或warning。log_level = notice
pm.status_path:提供一个状态页面,方便监控。
pm.status_path = /status
ping.path 和 ping.response:用于健康检查。
ping.path = /ping
ping.response = pong
确保PHP-FPM进程有足够的文件描述符可用:
ulimit -n 65535
优化网络性能:
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
确保PHP OPcache已启用并正确配置,以提高脚本执行速度。
以下是一个示例配置:
[www]
listen = /run/php/php7.4-fpm.sock
listen.owner = www-data
listen.group = www-data
user = www-data
group = www-data
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
request_terminate_timeout = 30s
memory_limit = 128M
slowlog = /var/log/php-fpm/www-slow.log
request_slowlog_timeout = 10s
error_log = /var/log/php-fpm/error.log
log_level = notice
pm.status_path = /status
ping.path = /ping
ping.response = pong
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
sudo systemctl restart php7.4-fpm
通过以上优化,可以显著提高PHP-FPM的性能和稳定性。