在Linux上对PHP-FPM(FastCGI Process Manager)进行调优可以显著提高PHP应用程序的性能。以下是一些常见的调优步骤和建议:
PHP-FPM提供了多种进程管理方式,包括dynamic、ondemand和static。默认情况下,PHP-FPM使用dynamic模式。
pm.max_children: 最大子进程数。pm.start_servers: 启动时的服务器进程数。pm.min_spare_servers: 最小空闲服务器进程数。pm.max_spare_servers: 最大空闲服务器进程数。pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
request_terminate_timeout = 0
memory_limit = 128M
OpCache可以显著提高PHP脚本的执行速度。
[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
error_log = /var/log/php-fpm/error.log
log_level = notice
确保PHP-FPM进程有足够的文件描述符可用。
ulimit -n 65535
优化TCP参数以提高网络性能。
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.ip_local_port_range = 1024 65535
如果可能,使用持久连接(keep-alive)来减少连接开销。
fastcgi_keep_conn = on
使用监控工具(如top、htop、php-fpm status)来监控PHP-FPM的性能,并根据实际情况进行调整。
在修改配置文件后,记得重启PHP-FPM服务以应用更改。
sudo systemctl restart php-fpm
以下是一个示例的php-fpm.conf配置文件:
[global]
daemonize = yes
pid = /run/php/php7.4-fpm.pid
error_log = /var/log/php-fpm/error.log
log_level = notice
[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 = 0
memory_limit = 128M
opcache.enable = 1
opcache.memory_consumption = 128
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 4000
opcache.revalidate_freq = 60
fastcgi_keep_conn = on
根据你的具体需求和环境,可能需要进一步调整这些参数。