在Linux上优化PHP-FPM(FastCGI Process Manager)的配置可以显著提高PHP应用程序的性能。以下是一些常见的优化建议:
PHP-FPM提供了多种进程管理方式,包括dynamic、ondemand和static。默认情况下,大多数系统使用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
slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 10s
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
catch_workers_output = yes
使用Unix套接字而不是TCP/IP连接可以提高性能。
listen = /run/php/php7.4-fpm.sock
listen.owner = www-data
listen.group = www-data
确保PHP-FPM进程有足够的文件描述符可用。
ulimit -n 65535
定期重启PHP-FPM可以释放内存并清理缓存。
systemctl restart php7.4-fpm
使用监控工具(如Prometheus、Grafana)来监控PHP-FPM的性能,并根据实际情况进行调优。
以下是一个示例的php-fpm.conf配置文件:
[global]
daemonize = yes
pid = /run/php/php7.4-fpm.pid
[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
slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 10s
memory_limit = 128M
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
catch_workers_output = yes
根据你的具体需求和服务器资源,调整这些参数以达到最佳性能。