504 表示什么
504 状态码来自充当网关的服务器,例如 CDN、反向代理或负载均衡器。网关把请求转发给上游服务器后,未能在规定时间内收到响应。
HTTP/1.1 504 Gateway Timeout
返回 504 的可能是网站服务器前方的基础设施,也可能是正在使用的正向代理。Server 和 Via 等响应头或许能标明具体网关,但有些服务会删除或替换这些信息。与连接超时不同,504 是已送达客户端的 HTTP 响应。
常见原因
- 上游服务器过载。 应用的工作量太大,无法在网关规定的时间内处理完毕。
- 后端处理缓慢。 数据库查询、API 调用或文件处理耗时过长。
- 网络或 DNS 故障。 网关无法稳定连接上游服务,或无法解析其地址。
- 代理线路故障。 如果请求只在使用代理时失败,可能是代理线路或出口服务器速度过慢或不可用。
如何解决 504 错误
- 等待一段时间后重试安全请求。 采用有限次数的重试,并使用指数退避。不要直接重试付款请求或其他
POST请求,因为网关停止等待后,上游服务器仍可能已经完成操作。 - 对比直连请求和代理请求。 如果直连成功、代理请求失败,请测试其他可用的代理线路。如果两种方式都失败,问题很可能出在网站端。
- 降低请求负载。 减少并发和请求频率。大量突发请求可能导致网站或网关过载。
- 如果网站由你运营,请检查上游服务。 查看应用日志、数据库性能、DNS 解析和网关超时设置。延长超时时间可能只会掩盖后端处理缓慢的问题,因此应先找出延迟原因。
504、502 与 503 的区别
| 状态码 | 返回方 | 含义 |
|---|---|---|
| 504 Gateway Timeout(网关超时) | 网关或代理 | 等待上游响应的时间过长 |
| 502 Bad Gateway(错误网关) | 网关或代理 | 上游返回了无效响应 |
| 503 Service Unavailable(服务不可用) | 服务器或网关 | 服务暂时无法响应 |
常见问题
504 Gateway Timeout 是由代理引起的吗?
有可能。可以分别使用代理和不使用代理发送相同请求。如果两条路径都失败,问题通常出在网站的网关或上游服务器。
更换代理 IP 能解决 504 错误吗?
只有代理线路或出口服务器导致延迟时才可能有效。如果网站过载、数据库响应缓慢或上游 API 不可用,更换 IP 无法解决问题。
遇到 504 后应等待多久再重试?
先等待几秒,再逐渐延长间隔,重试安全请求。如果响应中包含 Retry-After,请按其要求等待,并在有限次数的尝试后停止重试。