跳至正文
中文
立即开始

503 Service Unavailable

503 Service Unavailable(服务不可用)是一种 HTTP 状态码,表示服务器或中间服务当前无法处理请求,通常是因为过载或维护。

文章目录(8 个章节)

503 表示什么

网站、负载均衡器、CDN 或反向代理都可能返回 503。配置的正向代理自身服务不可用时,也可能返回此状态码。与连接失败不同,503 是请求路径中某个服务返回的完整 HTTP 响应。

HTTP/1.1 503 Service Unavailable
Retry-After: 120

Retry-After: 120 表示客户端应等待 120 秒后再试。该响应头也可以包含日期,但不一定会出现,也不能保证下次请求成功。

常见原因

  • 流量过载。 当前活跃请求超出服务器或连接池的处理能力。
  • 计划维护。 运营方暂时下线了应用或某个 API 端点。
  • 没有健康的上游服务器。 网关仍在运行,但后端应用服务器不可用。
  • 保护性限速。 流量超出系统容量或配置的限制时,部分系统会返回 503,而不是 429。
  • 代理服务异常。 配置的代理可能已经过载,或无法连接上游网络。

如何解决 503 错误

  1. 检查响应头。 查看 Retry-After、Server、Via 和 CDN 专用响应头,确认响应由谁发出。
  2. 等待一段时间再试。 按照 Retry-After 指定的时间等待。如果没有此响应头,请使用带随机抖动和重试次数限制的指数退避策略。
  3. 降低请求压力。 减少并发和每秒请求数。立即反复重试可能会延长过载服务的不可用状态。
  4. 测试请求路径。 在允许的情况下,对比直接请求和经代理发送的请求。这有助于判断响应来自网站还是代理。
  5. 只重试安全操作。 重复发送 GET 通常是安全的。除非 API 支持幂等性,否则自动重试 POST 可能产生重复订单、消息或其他操作。

503、502、504 与 429 的区别

状态码 发送方 含义
503 Service Unavailable 服务器或中间服务 服务当前无法处理请求
502 Bad Gateway 网关 上游返回了无效响应
504 Gateway Timeout 网关 上游响应耗时过长
429 Too Many Requests 网站或中间服务 此客户端发送的请求过多

常见问题

503 错误是临时的吗?

通常是。HTTP 将 503 定义为暂时不可用,但响应方可能不会提供恢复时间。如果持续收到 503 响应,可能是服务故障或服务器配置错误。

503 是代理导致的吗?

有可能。检查响应头,并通过另一条允许使用的路径发送相同请求进行对比。如果只有经代理发送的请求失败,可能是代理不可用,也可能是代理到网站的路径不可用。

遇到 503 后应该等待多久再试?

如果响应中有 Retry-After,请按其指定的时间等待。否则,先短暂等待,每次失败后逐步延长等待时间,并在重试次数达到设定上限后停止。

相关术语

查看全部术语