温馨提示×

php-fpm在Linux上如何调优

小樊
40
2025-10-03 17:37:30
栏目: 编程语言

在Linux上对PHP-FPM(FastCGI Process Manager)进行调优可以显著提高PHP应用程序的性能。以下是一些常见的调优步骤和建议:

1. 调整进程管理参数

PHP-FPM提供了多种进程管理方式,包括dynamicondemandstatic。默认情况下,PHP-FPM使用dynamic模式。

  • pm = 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

2. 调整请求处理参数

  • request_terminate_timeout: 请求超时时间,防止长时间运行的脚本占用资源。
request_terminate_timeout = 0

3. 调整内存限制

  • memory_limit: 每个PHP进程的内存限制。
memory_limit = 128M

4. 启用OpCache

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

5. 调整日志级别

  • error_log: 错误日志文件。
  • log_level: 日志级别。
error_log = /var/log/php-fpm/error.log
log_level = notice

6. 调整文件描述符限制

确保PHP-FPM进程有足够的文件描述符可用。

ulimit -n 65535

7. 调整TCP参数

优化TCP参数以提高网络性能。

net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.ip_local_port_range = 1024 65535

8. 使用持久连接

如果可能,使用持久连接(keep-alive)来减少连接开销。

fastcgi_keep_conn = on

9. 监控和调优

使用监控工具(如tophtopphp-fpm status)来监控PHP-FPM的性能,并根据实际情况进行调整。

10. 重启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

根据你的具体需求和环境,可能需要进一步调整这些参数。

0