如何解决带有超时设置的 AWS ELB/EC2 HTTP 503?
How to solve AWS ELB/EC2 HTTP 503 with timeout settings?
我从一个由 ELB 后面的 2 个 t2.medium 实例组成的站点收到间歇性但有规律的 503 错误 ("Service Unavailable: Back-end server is at capacity")。 None负载特别重,监控一切正常
此处的 AWS 文档:
http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/ts-elb-error-message.html
假设潜在原因是 ELB 和 EC2 之间的超时设置不匹配:"set the keep-alive timeout to greater than or equal to the idle timeout settings of your load balancer"
EC2 上的 Apache conf 有:
- 保持活动状态
- MaxKeepAliveRequests 100
- KeepAliveTimeout 5
负载均衡器的空闲超时为 60 秒。
这似乎是一个原因,但我不确定修复方法。增加 Apache KeepAliveTimeout 不是 - 我理解 - 通常推荐,而且我同样不确定减少 ELB 上的空闲超时将对网站性能产生影响。
推荐的方法是什么?我怎样才能了解我的设置的理想设置是什么以及它处理的流量级别(目前大约 30-50 requests/min)?
我会降低 ELB 中的空闲超时。客户端将需要更频繁地打开新连接,但它只比重新使用保持连接慢一点。
在 Apache 中将 keepalive 提高到 60 也可以修复 503,但是您需要注意不要 运行 连接或内存不足,尤其是使用 prefork mpm,因为您将使用更多插槽在保活。使用 worker mpm(如果你不害怕 "This MPM is experimental" 警告,则使用 event mpm),确保你有足够高的 MaxClients 来处理所有请求,但又足够低,不会 运行 超出备忘录。
我从一个由 ELB 后面的 2 个 t2.medium 实例组成的站点收到间歇性但有规律的 503 错误 ("Service Unavailable: Back-end server is at capacity")。 None负载特别重,监控一切正常
此处的 AWS 文档: http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/ts-elb-error-message.html 假设潜在原因是 ELB 和 EC2 之间的超时设置不匹配:"set the keep-alive timeout to greater than or equal to the idle timeout settings of your load balancer"
EC2 上的 Apache conf 有:
- 保持活动状态
- MaxKeepAliveRequests 100
- KeepAliveTimeout 5
负载均衡器的空闲超时为 60 秒。
这似乎是一个原因,但我不确定修复方法。增加 Apache KeepAliveTimeout 不是 - 我理解 - 通常推荐,而且我同样不确定减少 ELB 上的空闲超时将对网站性能产生影响。
推荐的方法是什么?我怎样才能了解我的设置的理想设置是什么以及它处理的流量级别(目前大约 30-50 requests/min)?
我会降低 ELB 中的空闲超时。客户端将需要更频繁地打开新连接,但它只比重新使用保持连接慢一点。
在 Apache 中将 keepalive 提高到 60 也可以修复 503,但是您需要注意不要 运行 连接或内存不足,尤其是使用 prefork mpm,因为您将使用更多插槽在保活。使用 worker mpm(如果你不害怕 "This MPM is experimental" 警告,则使用 event mpm),确保你有足够高的 MaxClients 来处理所有请求,但又足够低,不会 运行 超出备忘录。