-1

我在 us-west-2a AZ 有两台带有 Ubuntu 环境的 c3.2xlarge EC2 机器。两者都包含与来自 AWS RDS (db.r3.2xlarge) 的 mySQL 数据库相同的代码。两个实例都添加到 ELB。两者都安排了一个每天运行两次的 cron。

ELB 已配置为在阈值超过 5.0 时发出警报。两个实例的 CPU 利用率平均为 30 - 50。在高峰时段,一两分钟达到 100%,然后恢复正常。但是 ELB 每天会不断地发出三次警报。此时,两个实例都有

CPU     - ~50%
Memory  - total - 14979
          used  - ~6000
          free  - ~9000
RDS CPU - ~30%
          Connections - 200 to 300 /5,000

根据这个https://aws.amazon.com/premiumsupport/knowledge-center/elb-latency-troubleshooting/我找不到这些实例有什么问题。但是延迟仍然达到峰值,两个实例都没有响应。

到目前为止,我只是从负载均衡器中删除一个实例,重新启动 apache,然后将其加载回来并对其他实例执行相同的操作。这可以完美地完成工作,并且实例和 ELB 在接下来的 6-10 小时内运行良好。但这是不可接受的,因为每天两次或三次必须照顾服务器,需要重新启动。

我需要知道是否有任何问题或需要采取任何步骤来解决此问题。

潜伏

4

1 回答 1

0

从您的问题来看:目前尚不清楚 ELB 警报正在监控什么。5.0 500s?

我猜发生的情况是,当 CPU 达到 100% 时,位于负载均衡器后面的服务响应速度很慢/没有响应。警报被触发。

更糟糕的是,如果只有一个实例失败(假设 cron 作业不会同时运行),ELB 将使该实例停止服务,而另一个实例将占用所有流量。如果一个实例无法占用所有流量,这意味着您将有第二个实例失败 + 也触发警报。

为什么需要在与服务相同的机器上运行 cron 作业?将其从这些机器上移走是一种选择吗?另外:增加 ELB 健康检查超时是一种选择吗?

于 2016-03-07T18:09:48.757 回答