linux

怎样诊断Linux服务器PHP-FPM性能瓶颈

小樊
36
2025-11-04 09:32:27
栏目: 云计算

1. 监控系统资源占用,定位基础瓶颈

使用top(按P键按CPU排序、按M键按内存排序)、htop(更直观的进程监控)或ps aux --sort=-%cpu | head -n 10命令,查看PHP-FPM进程的CPU、内存占用情况。若某进程长期占用CPU超过80%或内存占用过高(如单个进程超过500MB),可能是代码逻辑问题或进程配置不当。

2. 检查PHP-FPM进程状态,确认配置合理性

通过PHP-FPM内置命令php-fpm -t测试配置文件语法是否正确;使用systemctl status php-fpm(systemd管理)或service php-fpm status查看服务运行状态;若启用了状态页(需在配置文件中设置pm.status_path = /status),可通过curl http://localhost/status(需替换为实际路径)获取进程池的实时指标(如活跃进程数、闲置进程数、请求处理时间),判断pm.max_children(最大子进程数)是否过小(导致请求排队)或过大(耗尽内存)。

3. 分析慢日志,定位代码级性能问题

在PHP-FPM配置文件(如/etc/php/{version}/fpm/pool.d/www.conf)中开启慢日志:

slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 5s  # 超过5秒的请求记录

重启PHP-FPM服务(systemctl restart php-fpm)后,使用tail -f /var/log/php-fpm/slow.log实时查看慢日志,或用awk分析高频慢请求(如awk '{print $1, $NF}' /var/log/php-fpm/slow.log | sort | uniq -c | sort -nr统计IP或URL的请求次数与耗时)。通过慢日志定位到具体脚本或函数(如某接口执行时间过长),针对性优化代码(如减少循环嵌套、优化SQL查询)。

4. 检查PHP-FPM配置参数,调整进程管理策略

重点调整以下核心参数(位于www.conf中):

5. 使用性能分析工具,深入代码瓶颈

6. 检查外部依赖,排除I/O瓶颈

7. 监控网络与Web服务器,确认上下游问题

0
看了该问题的人还看了