AWS 弹性负载均衡器超时

Posted

技术标签:

【中文标题】AWS 弹性负载均衡器超时【英文标题】:AWS elastic load balancer timeout 【发布时间】:2017-09-30 12:00:53 【问题描述】:

我们一直在针对行为不端的 Web 应用程序(唉,我们无法控制)测试 Elastic Beanstalk。有时在发送响应的第一个字节之前需要超过 60 秒,但在 60 秒标记处,应用程序会从 nginx 发送 504: Gateway Timeout 消息。

我们需要将 60 秒设置为更高的值。我们尝试将这些设置添加到我们发送到“aws eb create-environment...”的文件中

 "Namespace": "aws:elb:policies:myPolicy",
"OptionName": "ConnectionSettingIdleTimeout", "Value": "300" 

但它们似乎不影响 60 秒超时。我们做错了什么?

【问题讨论】:

您收到来自 nginx 的消息,而不是 ELB,因此更改 ELB 设置无济于事。 这意味着我必须这样做:***.com/questions/23709841/… 对吗? 老实说 IDK。 【参考方案1】:

报告的错误可能来自您的ELB,但通常来自 Nginx。在前一种情况下,您可以使用AWS CLIIdleTimeout 提高到更高的限制:

# Modify ELB idle-timeout
aws elb modify-load-balancer-attributes --load-balancer-name <myloadbalancer> --load-balancer-attributes "\"ConnectionSettings\":\"IdleTimeout\":180"

在后一种情况下,考虑在http 块内提高nginx.conf 中的keepalive_timeout 限制,类似于以下内容,然后重新启动它(sudo service nginx restart):

http 
  // ...
  keepalive_timeout 180s;

【讨论】:

太棒了。你知道如何通过 eb 扩展方便地指定 ngnix 超时吗? 不,很遗憾。我在不使用ebextensions 的情况下完成了 Nginx 和 ELB 的所有配置调优。也许您会对link 中的示例感兴趣。

以上是关于AWS 弹性负载均衡器超时的主要内容,如果未能解决你的问题,请参考以下文章

AWS 通过弹性负载均衡器发送 http 请求

aws 弹性负载均衡器和限制

aws弹性负载均衡器未分发

Terraform 资源弹性负载均衡器 - 减少 ConnectionDrainingPolicy 超时

如何调试失败的 AWS 弹性负载均衡器健康检查

使用 AWS 弹性 beanstalk 负载均衡器在 Rails 上实施 https 连接