linux

LNMP环境下PHP-FPM如何调优

小樊
37
2025-05-13 11:30:44
栏目: 编程语言

在LNMP(Linux, Nginx, MySQL, PHP-FPM)环境下,PHP-FPM的调优可以从以下几个方面进行:

1. 调整PHP-FPM进程管理

1.1 进程模式

PHP-FPM有两种进程模式:dynamicstatic

通常推荐使用dynamic模式,因为它可以根据实际负载自动调整进程数。

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35

1.2 进程数量

pm.max_children是PHP-FPM可以同时处理请求的最大子进程数。这个值应该根据服务器的内存和CPU资源来设置。

pm.max_children = 50

2. 调整PHP-FPM超时设置

2.1 请求超时

request_terminate_timeout设置请求的最大执行时间。

request_terminate_timeout = 30s

2.2 执行时间

max_execution_time设置脚本的最大执行时间。

max_execution_time = 30

3. 调整PHP内存限制

3.1 内存限制

memory_limit设置每个PHP进程可以使用的最大内存。

memory_limit = 128M

4. 调整PHP错误日志

4.1 错误日志级别

error_reporting设置错误报告级别。

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

4.2 错误日志文件

log_errors设置是否记录错误日志。

log_errors = On
error_log = /var/log/php-fpm/error.log

5. 调整PHP-FPM日志

5.1 访问日志

access.log设置访问日志文件。

access.log = /var/log/php-fpm/access.log

5.2 慢日志

slowlog设置慢查询日志文件。

slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 10s

6. 调整Nginx与PHP-FPM的通信

6.1 FastCGI缓冲区大小

fastcgi_buffersfastcgi_buffer_size设置FastCGI缓冲区大小。

fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;

6.2 FastCGI超时

fastcgi_read_timeout设置FastCGI读取超时时间。

fastcgi_read_timeout 300s;

7. 监控和调优

使用监控工具(如Prometheus、Grafana)来监控PHP-FPM的性能指标,如请求处理时间、内存使用情况等,根据监控数据进行进一步的调优。

总结

调优PHP-FPM需要根据具体的应用场景和服务器资源来进行。建议先从基本的进程管理和内存限制开始,然后根据实际运行情况进行调整。同时,监控工具的使用可以帮助你更好地了解PHP-FPM的性能瓶颈,从而进行针对性的优化。

0
看了该问题的人还看了