首页/网络/协议速查/5xx 服务端错误类(500-599)
HTTP 方法与状态码91 条

5xx 服务端错误类(500-599)

表示服务器承认自己处理失败或无力完成请求;客户端(尤其是幂等请求)可在退避后重试并关注 Retry-After。

协议速查网络更新于 2026-10-13

5xx 是什么

5xx 表示服务器承认自己处理失败或无力完成请求:请求本身没有毛病,问题出在服务端或它依赖的上游。这一类错误是幂等请求退避重试的主要目标,也是告警系统最该关注的信号。排查的关键是分清层级:应用内部抛异常、网关连不上上游、上游太慢、容量过载,每种情况的日志位置与处置动作都不同。同一条错误码在不同网关层含义可能不一样,以网关自己的错误日志为准。

基本信息

范围以五开头的状态码
含义错误在服务端或上游、网关侧
常见码内部错误、未实现、网关错误、服务不可用、网关超时
是否可重试幂等请求可在退避后重试
归因依据网关错误日志与应用日志,两者要对照看

典型使用场景

  • 线上告警:把这一类错误率作为核心可用性指标
  • 发布验证:发布后观察该类错误是否上升,快速判断是否回滚
  • 容量评估:过载类错误的出现频率是扩容的直接依据
  • 依赖治理:区分是自身异常还是上游故障,明确责任方
  • 客户端重试策略:只对幂等请求开启自动退避重试

按幂等性重试

按幂等性重试
for i in 1 2 3; do
  curl -sf -o /dev/null https://api.example.com/status && break   # 成功即退出重试
  sleep $((i*2))   # 逐步退避,避免密集重试
 done
# 非幂等请求不要放进自动重试循环,除非接口支持幂等键

网关类错误对比

状态码含义常见根因
网关错误收到无效响应或连不上上游后端进程退出、端口未监听、协议不匹配
服务不可用过载或维护,应给出重试时间容量不足、主动降级、维护开关
网关超时上游处理超过时限慢查询、依赖无超时、长任务同步执行
内部错误应用自身未处理异常代码缺陷、配置错误、依赖故障

排查顺序

  • 先看网关错误日志判断错误由谁产生,再看应用日志找具体异常
  • 对照上游响应时间与请求总耗时,区分是上游慢还是网关侧排队
  • 确认是否与发布、扩容、定时任务在时间上重合,变更引入的问题最多
这一类的排查顺序是:应用日志指向自身异常,上游存活与监听指向网关错误,容量指标指向服务不可用,超时配置指向网关超时。顺序错了会在无关的方向上浪费大量时间。
非幂等请求在超时后盲目重试可能造成重复业务,例如重复下单与重复扣款。自动重试必须按请求语义分层配置,不能全局打开。

易错点

  • 把这一类错误全部归因为「服务器崩了」,不去区分是应用异常、上游不可用还是超时
  • 对非幂等请求做自动重试,超时变成重复业务
  • 没有为错误码建立分级告警,无法判断是零星抖动还是系统性故障
  • 只监控错误率不监控延迟,容量问题在彻底失败之前完全看不见

数据来源与参考

  • RFC 9110 §15.6 服务端错误
  • RFC 9110 §15.6.4(503 与 Retry-After)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌