Nginx 502 网关错误连环排查:从 upstream 超时到连接池耗尽
引言 周三下午三点,客服群开始零星弹出同一句话:"系统又打不开了,刷新一下又好了。" 监控上看服务实例全是绿色、健康检查通过率 100%、CPU 内存都正常,但 Nginx 的 502 曲线每隔十几分钟就冒一个小尖峰。我们登录服务器查后端应用日志——一片平静,ERROR 一个没有,连对应的访问记录都找不到。 这就是 502 类问题最迷惑的地方:报错发生在 Nginx,但根因往往不在 Nginx;后端日志干干净净,不是因为没问题,而是请求压根没走到(或没走完)业务代码。 这次排查从一行 upstream timed out 出发,顺着四层往下挖:Nginx 层超时 → JVM 层发现 GC 停顿 → 线程层发现请求排队 → 连接池层发现连接被慢 SQL 占满,最终拼出完整根因链。这篇文章把这条链路、每一步的排查命令、以及修复时的超时层级设计完整复盘。 一、现场:偶发 502,"偶发"才是最难的部分 1.1 故障特征 观察项现象 发生频率工作日下午集中,十几分钟一次,每次持续几秒到几十秒 用户体感页面转圈很久 → 502,立刻重试大概率成功 Nginx 监控502 率平时 0,尖....