当我连接至在配置为使用 Classic Load Balancing 的 EC2 实例上运行的 Web 服务器时,为什么会收到 HTTP 5xx 错误?

上次更新日期:2022 年 6 月 17 日

当我尝试连接至在配置为使用 Classic Load Balancing 的 EC2 实例上运行的 Web 服务器时,收到 HTTP 502、503 或 504 错误。如何对 5xx 错误进行故障排除并解决此错误?

解决方案

HTTP 502(无效网关)

如果经典负载均衡器 (CLB) 无法解析在 EC2 实例上运行的 Web 服务器或关联的后端应用程序服务器返回的消息,则您可能收到 HTTP 502 错误。

要解决此错误,请参阅当我通过经典负载均衡器发出请求时,收到 HTTP 502 错误。如何对这些错误进行故障排除?

HTTP 503(服务不可用)

出现 HTTP 503 错误的原因可能有多种,包括:

  • 激增队列已满。查看 SpilloverCount 指标,从而检查您的实例是否有足够的容量来处理请求速率。
  • 没有运行正常的实例。确保负载均衡器响应的每个可用区中都有运行正常的实例。为此,请查看 HealthyHostCount 指标。有关更多信息,请参阅对经典负载均衡器进行故障排除:运行状况检查
  • 您尚未在负载均衡器响应的每个可用区中注册至少一个实例。如果您无法确认是否在每个可用区中注册了实例,请开启跨区负载均衡
  • 没有为 Web 服务器实例注册的经典负载均衡器开启连接耗尽

有关解决此错误的帮助,请参阅如何对使用经典负载均衡器时返回的 HTTP 503 错误进行故障排除?

HTTP 504(网关超时)

出现 HTTP 504 错误的原因如下:

  • Web 服务器实例或后端应用程序服务器实例繁忙,无法在配置的弹性负载均衡器(ELB)空闲超时限制内响应请求。有关更多信息,请参阅对 ELB 经典负载均衡器的高延迟问题进行故障排除
  • Web 服务器实例或后端应用程序服务器实例在负载均衡器之前终止连接。这导致连接提前终止。
  • Web 服务器实例或后端应用程序服务器实例在请求未送达时已崩溃或已重启服务器进程。这导致服务器中断所有连接。
  • Apache Web 服务器实例开启了 AcceptFilter http/https 选项。这指示 Apache 在连接上实施 TCP_DEFER_ACCEPT。
  • Apache Web 服务器实例开启了 event MPM,但尚未对 preforkworker MPM 进行最佳配置。默认 ELB 空闲超时限制为 60 秒。有关更多信息,请参阅使用 Apache 或 NGINX 作为 ELB 后端服务器的最佳设置是什么?

有关解决此错误的帮助,请参阅如何对使用经典负载均衡器时返回的 HTTP 504 错误进行故障排除?