优化 PHP-FPM(FastCGI Process Manager)的性能可以显著提升基于 Linux 的 Web 应用程序的响应速度和处理能力。以下是一些常见的优化方法和最佳实践:
编辑 PHP-FPM 的配置文件(通常是 /etc/php/版本号/fpm/pool.d/www.conf),根据服务器资源进行调整:
增加进程数:
pm = dynamic 或 pm = ondemand:根据负载动态调整子进程数量。pm.max_children:设置最大子进程数,通常设置为 CPU 核心数的 4 倍左右。pm.start_servers、pm.min_spare_servers、pm.max_spare_servers:控制启动时的服务器数量和空闲服务器的数量。调整请求处理参数:
request_terminate_timeout:设置脚本执行的最大时间,防止长时间运行的脚本占用资源。rlimit_files 和 rlimit_core:限制每个子进程可以打开的文件描述符数量。在 php.ini 中配置 OPcache:
[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 opcache.fast_shutdown=1 优化 Linux 系统的内核参数,以提高 PHP-FPM 的性能:
文件描述符限制:
fs.file-max = 100000 ulimit -n 65535 TCP 参数优化: 编辑 /etc/sysctl.conf,添加或修改以下参数:
net.core.somaxconn = 65535 net.ipv4.tcp_max_syn_backlog = 65535 net.ipv4.ip_local_port_range = 1024 65535 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 30 sysctl -p 启用持久连接(Keep-Alive)可以减少 TCP 握手的开销:
fastcgi_keep_conn on;。如果应用依赖于数据库,确保:
PDO::ATTR_PERSISTENT => true)。除了 OPcache,还可以考虑使用其他 opcode 缓存解决方案,如 APCu 或 XCache,根据需求选择合适的缓存策略。
使用工具监控 PHP-FPM 的性能,如 top、htop、php-fpm status、New Relic 或 Datadog,分析瓶颈并进行针对性优化。
在优化性能的同时,确保系统的安全性和稳定性:
通过以上方法,可以显著提升 PHP-FPM 在 Linux 系统上的性能。根据具体的应用场景和服务器资源,调整参数以达到最佳效果。