特定区域中 AWS 上的 504 网关超时错误



当前环境:

Node.js API 服务器托管在具有负载均衡器和安全组的 EC2 实例 (Ubuntu20.04( 上,我们作为 HTTPS 提供服务。 前端位于与 Cloudfront 链接的 S3 上。

这两台服务器使用 Route 53 作为 DNS 提供商,一切正常。

问题:

一切正常,但在特定地区无法正常工作 - 美国康涅狄格州南温莎。(互联网提供商是Cox Cable(。API 请求经常返回 504(网关超时(错误,没有任何原因。用户界面运行良好。仅 API 请求。但它适用于不同地区,例如墨西哥和俄罗斯。

我在负载均衡器上尝试了很多东西,但实际上负载均衡器日志中没有发现 504 错误。(我已经在云观察中检查过(。这意味着请求未到达。也许是 53 号公路的错误?只配置了东西 - CNAME,没有别的。为什么在特定地区会发生这种情况?

欢迎任何体验!

原因 1:应用程序需要比配置的非活动超时更长的响应时间。

  • 解决方案 1:监视HTTPCode_ELB_5XX和延迟指标。如果这些指标增加,可能是因为应用程序未在非活动超时期限内响应。有关超出此限制的请求的详细信息,请在负载均衡器上启用访问日志,并查看 Elastic 负载均衡生成的日志中的 504 响应代码。如有必要,您可以增加容量或增加配置的停机时间。

原因 2:已注册的实例正在关闭与弹性负载均衡的连接。

  • 解决方案 2:在 EC2 实例上启用保持活动状态设置,并验证保持活动状态超时是否长于负载均衡器非活动超时设置。

笔记:

  • 检查防火墙、安全组和源服务器上的配置,确定错误来源
  • 如果您从 CloudFront 收到 HTTP 504 错误,但可以直接连接到源,请考虑增加分配的源响应超时。默认情况下,CloudFront 允许您将源连接保持打开状态 30 秒。如果您的应用程序需要超过 30 秒的时间来处理并返回响应,则 CloudFront 将返回 HTTP 504 错误。

最新更新