终止 EC2 实例的最快方法

终止 EC2 实例的最快方法

我的要求是能够在一分钟内终止 EC2 实例。

当前进程每个实例耗时不到 2 分钟,因为操作系统关闭进程耗时 60 秒。如果可能的话,我希望大大加快终止速度。

有人知道加速terminate()EC2 功能的方法吗?有没有办法像其他虚拟化解决方案一样,无需关闭进程就能“拔掉电源”?

背景
在Boto中,我在处理子网删除或其他后续任务之前先用该terminate()函数调用该函数。wait_until_terminated()

但是,我通过第三方 API 触发 boto,如果进程(如终止)耗时超过一分钟,该 API 就会超时。这意味着每次我终止时,API 都会返回错误。

我曾尝试与第三方合作来增加超时时间,但终止之类的事情并不在他们的预期用例中,而且截至目前,第三方还没有解决方案。

我尝试了一下,stop(Force=True)速度稍微快了一点,但仍然超过一分钟。

我试图强制删除 EBS 卷,但您必须先关闭实例,这会使该过程超过 1 分钟。

我尝试通过 SSH 运行各种命令shutdown参数halt,但找不到运行时间少于 60 秒的 OS 命令。正在运行的服务已达到最低限度,我无法进一步加快 OS 关闭速度。

我希望找到一种通过 AWS 来“切断”连接的方法。或者其他快速终止的方法。终止似乎需要关闭操作系统,当我想烧毁实例时,这对我来说有点奇怪。

答案1

虽然我同意这肯定是 XY 问题,你应该用另一种方式解决这个问题,但有比使用 更快的方式来关闭操作系统shutdown。没有理由等待 Linux 调用 init 脚本并向所有进程发出TERM和。KILL

从历史上看,我killall -9 init相信神奇的 SysRq 键是最快的方法。但是,systemd列出了许多方法(man systemd),例如:

   SIGRTMIN+13
       Immediately halts the machine.

   SIGRTMIN+14
       Immediately powers off the machine.

您可能需要测试几个选项才能找到 AWS 反应最快的选项,但从 60 秒操作系统关闭到 1-5 秒应该足够简单。

相关内容