Nginx返回504超时但多数无PHP/FPM日志的问题排查求助
Nginx返回504超时但多数无PHP/FPM日志的问题排查求助
大家好,最近我遇到了一个非常头疼的问题:我们的应用里频繁出现Nginx返回504 Gateway Timeout的请求,但大部分情况下,只有Nginx日志会记录“因60秒超时触发504”,完全看不到PHP/FPM侧的任何日志。
少数关联504的端点能找到对应的应用日志,排查后发现这些情况基本都是因为存在未优化的重型数据库查询,但绝大多数504请求连应用日志都没有,根本没法定位到底出了什么问题。
我已经尝试排查了两个方向,但都没找到原因:
- 怀疑日志缓冲区导致日志丢失:因为FPM侧也设置了60秒的超时,我一开始觉得是不是PHP进程被中断后,缓冲的日志没来得及发送出去?但我们用的是流式日志器,而且同样是60秒超时触发的504请求,有些是能正常生成应用日志的,所以这个猜测应该不成立。
- 怀疑PHP Worker数量不足:我们的FPM配置是:
但通过Prometheus监控来看,活跃进程的峰值只有15个,远低于30的上限。另外我们还配置了HPA,设置为当任意Pod达到特定条件时启动新实例,但目前也没有触发扩容的迹象。pm: static pm_max_children: 30
想请教一下社区的各位大佬,还有哪些可能的原因会导致这种情况?有没有什么排查思路可以推荐?
备注:内容来源于stack exchange,提问作者Bogdan Dubyk
相关产品推荐
相关产品推荐

