【发布时间】:2016-02-04 09:04:54
【问题描述】:
问题
我有一个 Node.js 应用程序在 6 个带有 nginx 的 EC2 实例上运行,所有这些实例都在 ELB 后面。我从 EC2 实例上的 nginx 收到的 504 Gateway Time-out 错误增加了,这导致不健康的主机从 ELB 中停止服务,最终导致 ELB 返回 503 Service Unavailable: Back-end server is at capacity。
问题
EC2 实例中 nginx 的 504s 增加可能是由于查询速度慢或吞吐量增加,这显然是这里要解决的优先事项,但我在这里提出的主要问题是:
Nginx、ELB 等的最佳超时配置是什么,以使它们能够很好地协同工作并防止这些多米诺骨牌效应破坏 ELB?
我遇到的大多数解决方案都更多地处理 Apache 或 PHP 设置,或者我不确定我发现的 nginx 设置是否真的适用于我当前的设置(我应该关心 fastcgi 还是代理设置?) .
当前配置
这是我当前配置的细分,任何其他指导将不胜感激。
在nginx.conf,我有这个:
http {
...
keepalive_timeout 95;
...
}
Amazon says 以“确保您为保持活动时间设置的值大于负载均衡器上的空闲超时设置”,所以我在这里介绍,因为 ELB 空闲超时设置为 90秒。不确定我是否应该在nginx.conf 中使用更多设置来不依赖默认值,或者在其他地方寻找其他非默认值。
我还在 Node.js 中使用默认值,我认为它有 120000 毫秒的请求超时。
ELB 有以下Connection Settings:
Idle Timeout: 90 seconds
ELB 具有以下运行状况检查设置:
Ping Protocol: HTTP
Timeout: 59 seconds
Interval: 60 seconds
Unhealthy Threshold: 3
Healthy Threshold: 2
再次,非常感谢这里的任何指导。
【问题讨论】:
标签: node.js nginx amazon-ec2 amazon-elb