我在 AWS EC2 实例上运行我的 PHP Web 应用程序,然后进行一个约 5-10 分钟的 ajax 调用,在 Google Chrome 的 Web 控制台中看到 504 (网关超时)
错误。我该如何增加这个值?这是否与 Apache 有关?
我在 AWS EC2 实例上运行我的 PHP Web 应用程序,然后进行一个约 5-10 分钟的 ajax 调用,在 Google Chrome 的 Web 控制台中看到 504 (网关超时)
错误。我该如何增加这个值?这是否与 Apache 有关?
默认情况下,ELB(弹性负载均衡)会在60秒后超时;我不知道有什么方法可以延长此限制,尽管此页面建议亚马逊支持团队可以为您执行操作(并且还提供了解决问题的方法):
第6点)Amazon ELB在空闲状态下超时时间为60秒
如果 Amazon ELB 在空闲状态下保持超过60秒,则当前会超时持久套接字连接。此情况将对生成大型文件(PDF、报告等)并将其作为响应发送回端口 EC2 并在整个生成过程中保持连接空闲的用例造成问题。为避免此情况,您需要每40秒左右在套接字上发送一些内容,以使连接在 Amazon ELB 中保持活动状态。注意:据我所知,在向 AWS 支持团队说明情况后,我们可以扩展此值。
编辑:正如下面的评论者所指出的,从2014年7月24日开始,您可以在 AWS 控制台中对此进行配置。
SO上有一个相关的问题在这里。 请确保您按照以下步骤操作(从这个相关问题开始):
- 我已确认容器/ Pod 正在运行,
- 应用程序已启动,
- 如果我执行 pod,然后我可以运行本地 curl 命令并从应用中获取响应。
- 我已检查了进入 pod 上的日志,并且流量正在到达。
下一步是增加 ELB 空闲时间,如前面的答案所述。 如果您使用 terraform,则可以在 ingress 的注释中使用:
"alb.ingress.kubernetes.io/load-balancer-attributes" = "idle_timeout.timeout_seconds=600"
"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中的说明进入你的ingress控制器,并检查你的nginx.conf文件。新的限制应该已经生效。