如何在 24 小时后自动终止 EC2 实例?

如何在 24 小时后自动终止 EC2 实例?

自动扩展组启动 EC2 实例,运行时间超过 24 小时的实例似乎性能开始下降。最长的一个实例运行了 3 天,直到我手动终止它。对于一个实例经常终止的自动扩展组来说,这似乎异常漫长。

具体来说,CPU 利用率User%上升到 30-40% 并保持这一高位,而自动扩展组中的其他实例仅为 10-15% 左右。这会耗尽 CPU 信用并降低一般 EB 环境指标,例如平均响应时间和 5xx 状态代码响应。

在此处输入图片描述

1)为什么实例在 24 小时后会开始逐渐受损?实例正在运行解析服务器(nodeJS)。我如何才能找出实例出了什么问题?我计划在再次发生这种情况时通过 SSH 进入实例,并使用 查看进程top

2) 如何自动终止运行时间超过 24 小时的实例?我尝试设置 Cloud Watch 警报,但 EC2 > Per Instance 未提供“正常运行时间”指标。我可以针对 CPU 利用率设置警报,但我不确定此指标对于故障实例的特征,因此 24 小时后终止似乎是更安全的做法。

更新

广告 1)问题可能是这样的: https://github.com/parse-community/parse-server/issues/6061

答案1

2019 年 11 月发布,Autoscaling Group Launch Templates 有一个可选参数,用于在给定时间后自动终止实例。您可以阅读有关它的信息这里

在此处输入图片描述

实例可以使用的最大时间长度。如果任何实例接近此限制,Amazon EC2 Auto Scaling 将逐渐替换它们。

以下是博客文章的内容

Amazon EC2 Auto Scaling 现在可让您定期安全地回收 Auto Scaling 组 (ASG) 中的实例。最大实例生命周期参数可帮助您确保在达到指定生命周期之前回收实例,从而为您提供一种自动化的方式来满足安全性、合规性和性能要求。您可以创建新的 ASG 或更新现有的 ASG,以包含您选择的 7 到 365 天之间的最大实例生命周期值。

答案2

1)为什么实例在24小时后会开始逐渐受损?

运行时间超过 24 小时的 EC2 实例没有问题。您的应用程序可能有错误,并且随着时间的推移速度会变慢。也许是内存泄漏导致交换增加?

2)如何自动终止运行时间超过 24 小时的实例?

有很多方法。最简单的方法可能是将 shell 脚本与应用程序部署捆绑在一起,该脚本会在 24 小时后终止实例。您可以使用以下命令执行此操作bash -c 'bash -c "sleep 3 && echo hi" &'。您可以通过将其添加到.ebextension 文件的命令部分在您的应用程序版本中。

相关内容