如何使用超时设置解决AWS ELB / EC2 HTTP 503?

时间:2015-04-08 08:32:07

标签: amazon-web-services amazon-ec2 amazon-elb

我从一个由ELB后面的2个t2.medium实例组成的站点得到了间歇性的但是经常出现503错误("服务不可用:后端服务器处于容量")。没有人承受特别沉重的负担,所有的监控似乎都很正常。

AWS文档: http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/ts-elb-error-message.html 假设潜在原因是ELB和EC2之间的超时设置不匹配:"将保持活动超时设置为大于或等于负载均衡器的空闲超时设置"

EC2上的Apache conf:

  • KeepAlive On
  • MaxKeepAliveRequests 100
  • KeepAliveTimeout 5

负载均衡器上的空闲超时为60秒。

这似乎是一个原因,但我不确定该修复。增加Apache KeepAliveTimeout不是 - 我理解 - 通常建议,并且我同样不确定减少ELB空闲超时对网站性能的影响。

推荐的方法是什么?如何才能了解我的设置的理想设置以及它处理的流量级别(目前约为30-50个请求/分钟)?

1 个答案:

答案 0 :(得分:3)

我会降低ELB中的空闲超时。客户端需要更频繁地打开新连接,但它比重用keepalive连接稍微慢一些。

在Apache中将keepalive提升到60也会修复503,但是你需要注意不要耗尽连接或内存,尤其是使用prefork mpm,因为你会在keepalive中使用更多的插槽。使用工作人员mpm(或事件mpm,如果你不害怕"这个MPM是实验性的"警告),请确保你有足够高的MaxClients来处理所有请求但是足够低以不用完备忘录。