如果在设定的时间范围内没有从上游收到HTTP响应,有没有人知道如何让亚马逊的Elastic Load Balancers超时?
有时,Amazon的Elastic Beanstalk将无法更新,并且任何对指定资源的请求(如果有任何用途,运行Nginx + Node)将在资源尝试加载时挂起任何请求页面。
我希望将请求超时保持在2秒以下,如果上游服务器此时没有响应,则自动故障转移到默认的503响应。
ELB可以实现吗?
干杯
答案 0 :(得分:0)
Configure Health Check Settings Elastic Load Balancing可以实现此目的:
Elastic Load Balancing会根据您指定的配置定期检查每个已注册的Amazon EC2实例的运行状况。如果Elastic Load Balancing发现不健康的实例,它会停止向实例发送流量并将流量重新路由到正常的实例。有关配置运行状况检查的详细信息,请参阅Health Check。
例如,您只需要为HTTP运行状况检查指定适当的 Ping路径,响应超时为2秒,并且 UnhealthyThreshold 1表示您的规格。
答案 1 :(得分:0)
TLDR - 在Nginx中设置超时。
让我们看看我们是否可以解决问题。
问题: 应该快速向客户展示一些东西。如果这是一个500页,那也没关系。但是,ELB当前等待60秒才放弃(https://forums.aws.amazon.com/thread.jspa?messageID=382182),这意味着在用户显示任何内容之前需要一分钟。
解决方案:
更改ELB的超时 看起来AWS支持将有助于增加超时(https://forums.aws.amazon.com/thread.jspa?messageID=382182),所以我想你可以要求反过来。因此,我们可以看到它不是用户/ api可调的,并且需要您与支持进行交互。这需要一些时间,更重要的是,当这个项目的未来开发人员对这么短暂的超时感到惊讶时,这似乎是一个奇怪的表盘。
更改nginx服务器的超时
这似乎是正确的变化水平。您可以使用proxy_read_timeout
(http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_read_timeout)来执行您要查找的内容。将其调整为小的(特别是,如果您愿意,可以将其设置为特定位置)。
更改请求的发生方式。 更改客户端代码的工作方式可能会有所帮助。您可以想象发送一个非常简单的html / js页面,其中1. ping以查看作业是否完成,以及2.让用户更新进度。这需要更多的工作,然后扔掉500页。
答案 2 :(得分:0)
最近,AWS添加了一种为ELB配置超时的方法。请参阅此博客文章: