要提升Ubuntu上php-fpm的性能,可以从多个方面进行优化。以下是一些关键的优化步骤和建议:
进程管理参数:
pm.max_children
:设置最大子进程数,根据服务器的内存和CPU资源来调整。pm.start_servers
:设置启动时的子进程数,建议设置为可用CPU核心数的4倍。pm.min_spare_servers
和 pm.max_spare_servers
:分别设置空闲进程的最小和最大数量,可以设置为可用CPU核心数的2倍和4倍。pm.max_requests
:设置每个子进程处理的最大请求数,可以设置为500或1000。资源限制参数:
rlimit_files
:设置进程可以同时打开的最大文件数。rlimit_core
:设置进程可以生成的core文件大小。请求处理参数:
request_terminate_timeout
:设置请求的超时时间,防止长时间运行的请求占用过多资源。request_slowlog_timeout
:设置记录慢日志的请求处理时间阈值。启用PHP的OPcache扩展可以缓存编译后的PHP代码,从而减少服务器负载和提高性能。在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
然后重启PHP-FPM服务以使更改生效。
unset()
函数释放不再使用的大数组或对象,优先使用局部变量。count()
或strlen()
函数,减少循环嵌套。增加网络缓冲区大小和TCP连接队列长度,减少time_wait
状态连接数量:
sudo sysctl -w net.core.rmem_max=16777216
sudo sysctl -w net.core.wmem_max=16777216
sudo sysctl -w net.core.somaxconn=4096
sudo sysctl -w net.ipv4.tcp_tw_reuse=1
sudo sysctl -w net.ipv4.tcp_tw_recycle=1
使用工具如htop
、vmstat
、iostat
等实时监控服务器的性能指标,并根据实际情况进行调整。
保持PHP和所有扩展库都是最新版本,以利用最新的性能改进和安全修复。
通过上述方法,可以显著提高Ubuntu上php-fpm的性能和稳定性。根据具体的应用场景和需求,可能需要进一步调整和优化。在进行任何配置更改后,都应该重启PHP-FPM服务以使更改生效。