应用层报文判读71 条

5xx 场景速判

500 应用异常、502 网关收到上游异常响应、503 不可用/过载、504 上游超时:从抓包能区分错误产生在网关还是上游链路。

5xx 场景速判

五个开头的状态码各有明确分工:500 是应用自身异常,502 是网关从上游收到了无效响应,503 表示服务不可用或过载,504 是网关等待上游超时。只看客户端侧抓包很难区分成因,把网关两侧的流量放在一起对比,才能判断错误是在网关内部产生还是来自上游。

基本信息

适用平台Wireshark 的 HTTP 解析,适用于各类网关架构
过滤语法http.response.code >= 500 && http.response.code <= 599
核心差别错误产生在网关自身还是上游链路
关键手段网关两侧同时抓包

典型使用场景

  • 区分 502 与 504:前者是上游返回异常,后者是等待上游超时
  • 定位错误环节:确认错误由网关产生还是由上游引发
  • 排查上游健康:结合上游的连接建立与响应情况
  • 验证重试策略:看网关是否对幂等请求做了重试
  • 评估影响范围:统计各码点占比与涉及的接口

常用过滤

常用过滤
http.response.code >= 500 && http.response.code <= 599   # 全部服务端错误
http.response.code == 502                                 # 上游响应异常
http.response.code == 504                                 # 网关等待上游超时

码点对照

码点含义排查重点
500应用内部异常应用日志与堆栈
502网关收到无效的上游响应上游连接建立与响应格式
503服务不可用或过载限流、排队与容量
504网关等待上游超时上游处理时长与超时配置
只抓客户端侧无法区分 502 与 504 的成因,必须在网关两侧同时取数。两侧数据一对比,就能判断是网关自身处理的问题还是上游链路的问题。
504 的超时窗口是网关的配置值,抓包中体现为一段固定时长的无响应。这段时长本身往往就是配置里的阈值,可以据此反推配置。
五个开头的错误伴随连接重置时,要区分是上游主动重置还是链路中途中断。两者在时间顺序与报文形态上都有区别。

易错点

  • 只抓客户端侧无法区分 502 与 504 的成因,必须在网关两侧取数
  • 5xx 伴随连接重置时注意区分上游主动 RST 与链路中断
  • 把 503 一律归因于过载:也可能是主动维护或依赖不可用,需结合配置判断
  • 统计错误率时不区分码点,会让不同错误的处置优先级无法区分

数据来源与参考

  • RFC 9110(5xx)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌