
一、502 和 504 到底差在哪
这两个错误都来自反向代理或网关(常见的是 Nginx),含义完全不同,方向也不同:
- 502 Bad Gateway:网关成功连上了后端,但后端返回了非法响应或直接断开,属于"后端坏了或崩了";
- 504 Gateway Timeout:网关连上了后端,但后端在规定时间内没返回结果,属于"后端太慢或卡住了"。
记法很简单:502 是"没接住",504 是"等不及"。先分清是哪一个,排查方向就定了一半。
二、第一步永远是看日志
不要凭猜,日志里通常直接写着原因。按这三层依次看:
- 网关日志:Nginx 的 error.log 会记录 upstream 相关报错,如连接被拒绝、连接被重置、读取超时;
- 应用日志:后端服务自己的日志,看有没有崩溃、异常堆栈、超时;
- 系统日志:看是否发生 OOM 杀进程、磁盘写满、内核报错。
日志查看方法可参考服务器系统日志怎么看。
三、502 的常见成因
- 后端进程挂了:PHP-FPM、Java 应用、Node 服务崩溃或没启动;
- 端口没监听:配置改了端口,网关还指向旧端口;
- 连接数打满:后端进程数上限太低,请求排队后被拒;
- 被系统杀掉:内存不足触发 OOM,进程被杀,参考服务器内存不足怎么办;
- 套接字权限:网关与后端用户不同,访问 socket 被拒。
先确认后端进程在不在、端口通不通,多数 502 就能定位。
四、504 的常见成因
- 后端响应太慢:慢 SQL、大文件处理、外部接口阻塞;
- 数据库卡住:锁等待、慢查询堆积,拖垮整个应用;
- 资源耗尽:CPU 满载、磁盘 IO 打满,参考服务器硬盘读写慢怎么办;
- 超时设置过短:后端正常但耗时超过网关超时阈值;
- 网络抖动:网关到后端链路丢包,参考服务器网络丢包怎么办。
五、按顺序走的排查步骤
- 第一步:确认影响范围,是整站还是某个接口,是全量用户还是部分用户;
- 第二步:看网关错误日志,确认是连接类错误还是超时类错误;
- 第三步:检查后端进程状态与端口监听情况;
- 第四步:在服务器本地直接访问后端,绕开网关判断问题在哪一层;
- 第五步:检查系统资源(CPU、内存、磁盘、连接数);
- 第六步:检查数据库与依赖服务是否正常;
- 第七步:定位后先恢复服务,再复盘根因。
六、应急恢复的几种手段
- 重启后端服务:最快见效,但要先留现场(日志、堆栈)再重启;
- 临时扩容进程数:应对连接数打满导致的 502;
- 临时调大超时:应对 504,但只是缓解,根因仍要查;
- 切流量:有多节点时先摘除故障节点,保住可用性;
- 回滚:如果是刚发版后出现,优先回滚到上一版本。
七、怎么预防再犯
- 加监控告警:对网关错误率、后端响应时间、进程存活做监控,参考企业服务器性能监控与告警体系;
- 合理设置超时与重试:网关、应用、数据库三层超时要逐层收敛,避免雪崩;
- 控制并发与队列:给后端加限流与排队,避免瞬时流量打垮服务;
- 健康检查:配置后端健康检查,异常节点自动摘除;
- 容量评估:定期看 CPU、内存、连接数的水位,提前扩容。
高可用架构的整体设计可参考服务器负载均衡与高可用架构设计。
八、结语
502 与 504 的排查本质是顺着请求链路逐层定位:网关、后端、资源、依赖。先分清"没接住"还是"等不及",再按日志与资源两条线推进,绝大多数问题半小时内能定位。今朝恒业可提供网站服务器、负载均衡与运维监控的选型与部署支持。
延伸阅读推荐:

