繁体   English   中英

AWS 上的 504(网关超时)

[英]504 (Gateway Timeout) on AWS

我的 Web 应用程序在 PHP 中的 AWS EC2 实例上运行,我进行了大约需要 5-10 分钟的 ajax 调用,我在 Google Chrome 中看到了 Web 控制台,我得到了这个504 (Gateway Timeout) ,我如何增加该值其中,这与apache有关吗? 谢谢

ELB 默认超时时间为 60 秒; 我知道没有办法扩展这个限制,尽管这个页面表明这是亚马逊支持可以为你做的事情(并且还建议了一种解决问题的方法):

第 6 点)Amazon ELB 超时 60 秒(保持空闲)

如果 Amazon ELB 保持空闲状态,它当前会在 60 秒后超时持久套接字连接。 对于在后端 EC2 生成大文件(PDF、报告等)、将它们作为响应发送回并在整个生成过程中保持连接空闲的用例,这种情况将是一个问题。 为避免这种情况,您必须每 40 秒左右在套接字上发送一些内容,以保持 Amazon ELB 中的连接处于活动状态。 注意:我听说我们可以在向 AWS 支持团队解释案例后扩展此值。

编辑:正如下面的评论者所指出的,截至2014 年 7 月 24 日,这可以在您的 AWS 控制台中进行配置。

您是否尝试过更改 ELB 的超时时间? 增加负载均衡器属性内的不活动限制连接。 然后您可以将默认限制形式 60 更改为 120。

关于被如此一个相关的问题在这里 确保您正在执行以下操作(来自此相关问题):

  1. 我已经确认容器/豆荚正在运行,
  2. 应用程序已经启动并且
  3. 如果我执行到 pod 中,那么我可以运行本地 curl 命令并从应用程序获得响应。
  4. 我已经检查了入口 Pod 上的日志,并且流量正在到达

这里这里的一些有用的命令。

下一步是增加 ELB 空闲时间,如上一个答案中所述。 如果您使用 terraform,您可以在入口的注释中使用:

"alb.ingress.kubernetes.io/load-balancer-attributes" = "idle_timeout.timeout_seconds=600"

通常在 ELB 顶部有一个 NGINX 入口控制器,有助于将流量引导到您的服务。 后者也有超时,通常是 60 秒。 您需要按照此处指定的方式更改其超时。 如果您使用 terraform,您可以像这样在入口注释中指定它们(将它们从 60 秒更改为 300 秒):

  "nginx.ingress.kubernetes.io/proxy-connect-timeout" = "10"
  "nginx.ingress.kubernetes.io/proxy-send-timeout" = "300"
  "nginx.ingress.kubernetes.io/proxy-read-timeout" = "300"

然后,您可以按照链接 2 和 3 中的说明进入您的入口控制器,并检查您的 nginx.conf 文件。 应该应用新的限制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM