在Linux下优化PHP-FPM配置可以显著提高PHP应用程序的性能。以下是一些常见的优化建议:
PHP-FPM使用两种进程管理方式:dynamic和static。
Dynamic:
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
Static:
pm = static
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
dynamic模式会根据负载自动调整进程数,而static模式则是固定的进程数。通常情况下,dynamic模式更适合大多数场景。
request_terminate_timeout = 0
设置为0表示不限制请求处理时间,可以根据需要调整。
slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 10s
记录处理时间超过10秒的请求,有助于找出性能瓶颈。
php_admin_value[memory_limit] = 128M
根据应用程序的需求调整内存限制。
[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可以显著提高PHP脚本的执行速度。
确保PHP-FPM进程有足够的文件描述符可用。
ulimit -n 65535
并在/etc/security/limits.conf中添加:
* soft nofile 65535
* hard nofile 65535
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
这些设置可以优化网络性能。
net.ipv4.tcp_fastopen = 3
这可以提高TCP连接的建立速度。
编辑/etc/sysctl.conf文件,添加或修改以下参数:
vm.swappiness = 10
vm.vfs_cache_pressure = 50
net.core.somaxconn = 65535
net.ipv4.ip_local_port_range = 1024 65535
然后运行sysctl -p使更改生效。
确保启用了适当的监控和日志记录,以便及时发现和解决问题。
通过以上这些配置调整,可以显著提高PHP-FPM在Linux环境下的性能。不过,具体的配置值需要根据实际的应用场景和硬件资源进行调整。