【问题标题】:AWS ELB 502 at the same time every dayAWS ELB 502 每天同一时间
【发布时间】:2016-04-11 16:26:14
【问题描述】:

首先了解一下我的设置:

  • 1 ELB
  • 4 个 EC2 实例
    • 2 个网络服务器
    • 1 运行迁移、队列 (beanstalkd) 和调度程序
    • 1 个“服务”服务器(socket.io 实例等)
  • RDS 上的 MySQL
  • Elasticache 上的 Redis
  • 用于用户资产的 S3

每天晚上 10:55,用户报告出现白屏和 502 Bad Gateway 错误。 ELB 报告说这两个 EC2 实例都是 OutOfService,但我通过 SSH 连接到它们并且完全能够通过绕过 ELB 来使用该站点。 RDS 和 Elasticache 维护时段不在此期间,并且这两个实例也未处于负载状态。我在 ELB 访问日志中找不到任何内容,实例端的 nginx 日志中没有任何内容,Laravel 应用程序日志中没有任何内容。 Laravel 调度程序中也没有任何东西在此时运行。

我发现的唯一一件事是,在我的 CloudWatch 指标中,ELB 延迟峰值高达大约 5-10 秒。所有这些导致每天同一时间大约有 5-15 分钟的停机时间。我似乎找不到任何导致问题的原因。

对于导致这种情况发生的原因,我 100% 感到困惑。任何帮助表示赞赏。

【问题讨论】:

  • ELB 实例是 OutOfService - 这是最大的线索。 ELB健康检查是如何配置的?您需要开始查看该健康检查页面以及健康检查页面如何返回状态 200 或 4xx 或 5xx。这就是问题所在。
  • Ping 目标:HTTP:80/,超时:10 秒,间隔:30 秒,不健康阈值:6,健康阈值:10。然后在 CloudWatch 中,它是一堆 HTTP 5xx 和 ELB 5xx 状态当时。即使我可以绕过 ELB 直接访问该站点,这就是为什么它对我没有任何意义。
  • 您的意思是,您可以在 5 到 15 分钟的停机时间内通过以下方式访问 Web 应用程序。绕过 ELB 并命中 EC2 实例?
  • 是的,这就是我的意思,如果我没有说清楚,对不起。在监视top 时,我还通过 SSH 连接到这两个实例,而且我从来没有断开连接或任何事情。
  • CPU、NetworkIn、NetworkOut、StatusCheck_Failed 这两个实例的最大统计图是什么样的?

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


【解决方案1】:

可能发生的情况是您的 Web 服务器连接不足,ELB 无法执行健康检查并停止服务。实际上,其中一台机器体验到这一点并停止服务就足够了,而另一台机器将作为级联效应被杀死。

网络服务器可以同时保持多少连接? 当这种情况发生时,您是否会在那个时间点处理一个特别“繁重的请求”? 添加更多网络服务器是否可以解决您的问题?

【讨论】:

  • 最大连接数:老实说,我不知道。重磅请求:不晚5分钟才开始?是的,但这就是队列服务器的用途,并且永远不会超过 5% 的 CPU 负载。更多服务器:不确定,我今晚会试试这个。成本已经相当高了:/
  • 要么监视重负载(大量请求或长时间运行的请求)。你用的是什么网络服务器?
  • Nginx。 Web 实例使用 Laravel Forge 进行配置和管理。我已经建立了第三个网络实例,看看今晚是否会再次发生,我将不得不监控实时流量或其他东西。我在top看prod1和prod2,一切正常。
  • Forge 默认禁用访问日志,所以我必须启用它们。现在是晚上 11 点 40 分,网站没有关闭,所以我假设这确实是一个流量问题,因为添加另一个 Web 服务器似乎可以完成这项工作。感谢您的帮助并引导我朝着正确的方向前进。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多