【问题标题】:How to solve AWS ELB/EC2 HTTP 503 with timeout settings?如何使用超时设置解决 AWS ELB/EC2 HTTP 503?
【发布时间】:2015-06-13 02:48:19
【问题描述】:

我从一个由 ELB 后面的 2 个 t2.medium 实例组成的站点收到间歇性但经常出现的 503 错误(“服务不可用:后端服务器已满负荷”)。没有一个负载特别重,所有监控似乎都正常。

此处的 AWS 文档: http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/ts-elb-error-message.html 说一个潜在的原因是 ELB 和 EC2 之间的超时设置不匹配:“将 keep-alive 超时设置为大于或等于负载均衡器的空闲超时设置”

EC2 上的 Apache conf 有:

  • KeepAlive 开启
  • MaxKeepAliveRequests 100
  • KeepAliveTimeout 5

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

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

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

【问题讨论】:

  • 增加 apache 超时应该没问题,在 ELB 之后,因为 ELB 持有连接,而不是浏览器直接持有它们。试试看?

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


【解决方案1】:

我会降低 ELB 中的空闲超时。客户端将需要更频繁地打开新连接,但这只是比重用保持连接的速度稍慢。

在 Apache 中将 keepalive 提高到 60 也可以修复 503,但是您需要注意不要耗尽连接或内存,尤其是使用 prefork mpm,因为您将在 keepalive 中使用更多的插槽。使用 worker mpm(如果您不害怕“This MPM is experimental”警告,则使用 event mpm),确保您有足够高的 MaxClients 来处理所有请求,但要足够低以不会耗尽备忘录。

【讨论】:

    猜你喜欢
    • 2018-01-07
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 2016-11-17
    • 2019-08-01
    • 2017-10-25
    • 2020-12-27
    相关资源
    最近更新 更多