PHP-FPM 错误日志分析实操指南
一 定位日志与关键配置
二 快速排查流程
三 常见错误模式与处置要点
| 现象 | 日志线索 | 处置要点 |
|---|---|---|
| 502 Bad Gateway | FPM 未启动/崩溃;Nginx 与 FPM 通信失败 | 检查进程与端口/套接字;核对 Nginx fastcgi_pass 与 FPM listen 一致 |
| 504 Gateway Timeout | 脚本执行超时;进程池资源不足 | 调整 request_terminate_timeout;增加 pm.max_children;优化慢脚本 |
| Primary script unknown | SCRIPT_FILENAME 传递错误 | Nginx 配置确保 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 且 root 正确 |
| 进程池耗尽 | 日志提示 pm.max_children reached | 提升 pm.max_children;结合内存与性能选择 dynamic/ondemand;优化应用 |
| Allowed memory exhausted | E_ERROR: Allowed memory size of X bytes exhausted | 提升 memory_limit;优化代码与查询 |
| 空白页 | 无输出且应用无日志 | 临时开启 display_errors = On 复现;检查语法与 FPM 错误日志 |
| FPM 无法启动 | 配置语法错误;端口冲突 | 执行 php-fpm -t;排查端口占用与配置项冲突 |
| 以上模式与处置要点可覆盖大多数线上问题,配合日志时间点与请求上下文能更快定位根因。 |
四 慢日志与性能瓶颈定位
五 日志轮转与长期治理