首页/云/云网络与负载均衡速查/负载均衡 504 排查思路
负载均衡54 条

负载均衡 504 排查思路

504 表示等待后端响应超过了超时阈值:后端处理慢、连接池被占满、下游依赖慢或超时阈值过小都会触发。定位时先用后端慢日志与访问日志耗时字段对齐时间点,再决定优化方向。

504 意味着什么

504 表示负载均衡等待后端响应的时长超过了阈值:后端处理慢、连接池被占满、下游依赖响应慢、或者超时阈值本身设得过小,都会触发。它和 502 的区别在于 502 是连接层面就失败,504 是连接建立了但迟迟没有响应。定位时先用后端慢日志与访问日志里的耗时字段按时间点对齐,确认是「个别请求慢」还是「高峰期整体排队」,再决定是优化应用还是调整参数。

基本信息

含义负载均衡等待后端响应的时长超过阈值
常见原因后端处理慢、连接池打满、外部依赖慢、阈值偏小
定位手段后端慢日志与访问日志耗时字段按时间对齐
处置顺序先优化瓶颈,再评估超时参数是否需要调整

典型使用场景

  • 报表或导出接口超时,需要区分是业务本身慢还是参数过紧
  • 高峰期批量出现 504,排查连接池与下游依赖的排队情况
  • 上线新版本后 504 增多,对比新旧版本的接口耗时分布
  • 第三方依赖变慢引发的连锁超时,需要隔离慢依赖

测量后端实际处理耗时

测量后端实际处理耗时
for i in $(seq 1 5); do \
  curl -s -o /dev/null -w '%{time_total}s\n' http://10.0.1.10:8080/slow; done
# 同时在网关侧看响应时间分位值,判断是个体还是整体变慢

原因与处理方向

现象处理方向
个别接口固定超时优化该接口或拆分长任务
高峰时段批量超时扩容或增加连接池
下游依赖变慢加超时熔断与降级
阈值明显偏小评估后适度放宽并观察
单纯调大超时只会把压力往后推;先确认后端瓶颈(CPU、锁、下游依赖)再决定参数。

避免把超时当解法

504 的处置里有一个反复出现的陷阱:发现问题后先把超时时间调大,页面暂时不报错了,但慢请求依然占着连接与线程,压力只是从负载均衡转移到了后端内部,最终以内存上涨或线程耗尽的形态再次爆发,而且症状更难定位。稳妥的做法是先用超时计数与耗时分位值确认根因,只有在确认后端处理时间确实合理偏长、且已无法进一步优化时,才考虑调参,并同步调整监控阈值,观察一段时间再决定是否保留。

易错点

  • 直接调大超时掩盖慢请求根因
  • 只看单次请求耗时,忽略高峰期排队
  • 把 502 与 504 混为一谈,排查方向从一开始就偏了
  • 缺少超时计数监控,问题只在用户投诉时才被发现

数据来源与参考

  • 阿里云 CLB 超时排查文档
  • 腾讯云 CLB 超时说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌