我们想在具有 16 个 vCPU 的 AWS EC2 Windows Server 实例上运行耗时的 C++ 构建。由于成本很高,我们希望这个实例 - 开始 - 运行构建 - 当构建完成(或由于错误而停止)时,停止实例
我考虑过为此目的使用警报,但构建过程中有一些 CPU 使用不多的部分(例如,上传使用网络但几乎没有 CPU 的文件)并且警报无法同时检查 CPU 和网络流量(AND 运算符是失踪)。
是否有任何其他机制可以用于空闲检测?在某种程度上,我们可以更改构建脚本以向 AWS 发送消息(例如网络消息)。
您正在以错误的方式解决此问题 - 正如您所发现的,基于资源利用率执行此类关闭任务并不是最可靠的解决方案。
相反,使用计划的 Lambda 作业(或在某处的另一台服务器上运行的 cron 脚本)来检测何时需要构建,然后启动服务器。然后对于关闭,给实例一个实例角色,该角色有权自行停止,作为构建过程的最后一步,实例可以使用 AWS API 自行关闭。