我的网络应用程序在PHP上的AWS EC2实例上运行,我进行了大约5-10分钟的ajax调用,我在Google Chrome中看到了Web控制台,我得到了这个504 (Gateway Timeout)
,我怎么能增加这个值,是否与apache有关?
感谢
答案 0 :(得分:12)
ELB默认超时60秒;虽然this page表明亚马逊支持可以为您做的事情(并且还提出了一种解决问题的方法),但我并不知道如何扩展此限制:
第6点)亚马逊ELB超时为60秒(保持闲置状态)
亚马逊ELB 目前超时持久套接字连接@ 60秒(如果是) 保持闲置。这种情况对于用例来说是一个问题 在后端EC2生成大文件(PDF,报告等),将它们发送为 响应并在整个生成期间保持连接空闲 处理。为了避免这种情况,你必须在套接字上发送一些东西 每隔40秒左右,以保持Amazon ELB中的连接活动。 注意:我听说在解释案例之后我们可以扩展这个值 AWS支持团队。
编辑:正如下面的评论者指出的那样,从July 24th, 2014起,这可以在您的AWS控制台中进行配置。
答案 1 :(得分:0)
您是否尝试过更改 ELB 的超时时间? 增加负载均衡器属性内的不活动限制连接。然后您可以将默认限制形式 60 更改为 120。
答案 2 :(得分:0)
SO here 上有一个相关问题。 确保您正在执行以下操作(来自此相关问题):
<块引用>下一步是增加 ELB 空闲时间,如上一个答案中所述。 如果您使用 terraform,您可以在入口的注释中使用:
"alb.ingress.kubernetes.io/load-balancer-attributes" = "idle_timeout.timeout_seconds=600"
通常在 ELB 之上有一个 NGINX 入口控制器,帮助将流量引导到您的服务。 后者也有超时,通常是 60 秒。 您需要按照指定的 here 更改其超时时间。 如果您使用 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 文件。应该应用新的限制。