【问题标题】:AWS Autoscaling Group EC2 instances go down during cron jobsAWS Autoscaling Group EC2 实例在 cron 作业期间关闭
【发布时间】:2021-05-22 02:20:17
【问题描述】:

我尝试了自动缩放组,或者只是一堆由负载均衡器绑定的 EC2 实例。乍一看,这两个配置都运行良好。

但是,当 EC2 是自动缩放组的一部分时,它有时会出现故障。实际上它经常发生,几乎每天一次。他们以“硬重置”的方式下降。 ec2 监控图显示 CPU 使用率上升到 100%,然后实例变得没有响应,然后被自动缩放组终止。

这与我在这些实例上的流程无关。

当实例不属于 Autoscaling 组时,它可以工作多年而不会出现 CPU 使用高峰。

自动缩放组实例的“硬重置”正在阻碍我的 cron 作业。尽管我喜欢自动缩放组,但我无法使用它。

有处理“硬重置”的标准方法吗?

PS。

在我的例子中,cron 作业在 Ubuntu 上运行 PHP 脚本。我设法只让一个实例运行该作业。

【问题讨论】:

  • ASG 中的“硬休息”是什么意思?
  • 我所说的“硬休息”是指“在不给软件时间完成流程的情况下终止”。我认为“硬休息”意味着有人只是从电源插座中拔出电源线,而无需等待计算机关闭。请帮我找到一个更好的词。谢谢。
  • 您不是偶然使用 Spot 实例吗?你有什么样的缩放条件?
  • 您正在运行什么样的实例?可爆破?
  • 我最初的猜测是您的实例受到限制,因此它们无法响应活性检查,但阅读了更多文档后,我认为情况并非如此。

标签: amazon-web-services amazon-ec2 cron aws-load-balancer aws-auto-scaling


【解决方案1】:

听起来您的 cron 运行时运行状况检查失败,结果导致实例停止服务。

如果您查看 ASG,应该会列出移除实例的原因。这通常是运行状况检查失败,但也可能有其他原因。

您可以采取一些措施来解决此问题。

首先,确定您的 cron 为何占用 100% 的 CPU,以及通常需要多长时间。

查看您的运行状况检查设置。您使用的是 HTTP 还是 TCP?间隔是多少,在停止服务之前必须失败多少次检查?

在这两项之间,您应该能够调整运行状况检查,使其不会在 cron 运行期间停止服务。实例可能会失败,这通常是因为它的内存不足。如果是这种情况,您可能需要考虑使用大型实例类型和/或启用交换。

【讨论】:

  • 这听起来不错。查看自动缩放作为运行状况检查所做的工作,然后将其从失败中修复。
【解决方案2】:

一旦我遇到类似的问题,在这种情况下系统自动更新正在运行。系统(Windows 服务器)下载了一个大更新,并在几个小时内占用了 100% 的 CPU。我的建议是尝试监视当时正在运行的服务(即使 SO 是 Linux),还要检查任何计划任务(看起来它正在定期运行)。除此之外,请尝试在活动期间保持任务列表处于打开状态,看看发生了什么。

【讨论】:

  • 我无法重现它,它只是有时会发生。我有 4 个 ubuntu 实例链接到一个自动缩放组。我可能错了,但我认为 Ubuntu 不会自动更新。即使是自动更新,也不会每天都发生。
猜你喜欢
  • 2017-03-22
  • 1970-01-01
  • 1970-01-01
  • 2014-05-25
  • 1970-01-01
  • 2020-08-22
  • 2021-07-15
  • 2013-04-14
  • 1970-01-01
相关资源
最近更新 更多