EC2 实例上的高 CPU% 以极有规律的时间间隔被盗

lor*_*o-s 4 virtual-machines central-processing-unit amazon-ec2

运行一些网站的AWS上有一个m1.small EC2 实例。我注意到我的 CPU 使用率每隔 30 分钟(0:06、0:36、1:06,...)就会出现固定的峰值。

我检查了我的 crons(我有很多),没有人每 30 分钟运行一次。看着top我注意到峰值大约有 1 分钟长,并且几乎完全由“被盗 CPU” (%st) 组成。我读过 Amazon VM 管理程序窃取了 CPU 时间,但我不明白为什么会发生这种情况(发生这种情况时我没有运行 CPU 密集型的东西)以及为什么它恰好每 30 分钟一次。

你有什么线索吗?我应该购买更大的实例吗?我希望不会,因为其余时间 CPU 非常低,平均负载 永远不会超过 0.5 ...

Cacti CPU 图

Eri*_*ond 11

根据 EC2 实例类型和底层硬件,您可能无需为访问所有底层 CPU 周期付费。如果您要求 m1.small 相当于旧的、速度较慢的 CPU,亚马逊不会让您 100% 使用现代、快速的 CPU。

在 EC2 上,窃取不依赖于其他虚拟机邻居的活动。这只是 EC2 确保您获得的 CPU 周期不会超过您支付的费用的问题。

如果您的 m1.small 获得了底层更快 CPU 的 50%,那么对于您使用的每一位 CPU,您将看到另一个相同百分比的标记为窃取。

如果 EC2 让您认为您真正可用的 CPU 是“100%”,而不是用您无法访问的 CPU 的其余部分取笑您,然后告诉您您无法拥有它,那就太好了尝试使用 CPU,但鉴于当前的 VM 和主机设置,这是它的工作方式。

考虑到与底层硬件上的 CPU 速度相比,m1.small 实例可以访问的 CPU 价格有限,因此可能会显示出很高的窃取率。

如果您担心此特定实例可能在 EC2 方面出现问题,您可以停止/启动它以将其移至新硬件(我的文章)并查看这是否有所不同。当然,如果窃取百分比下降,则可能只是表明您已转向较慢的硬件 CPU。

至于每 30 分钟的活动,那是您服务器上的软件。它可能是系统 cron 作业,也可能由守护进程(后台进程)触发。

  • Eric,您的回答非常清晰且信息丰富,但我仍然不明白为什么很多用户(包括我自己)看到被盗 CPU 百分比增加以及受影响机器的响应速度慢得多。如果虚拟机始终可以访问相同“数量”的 CPU 并且被盗 CPU %“不依赖于其他虚拟机邻居的活动”,那么为什么随着被盗 CPU % 的增加,虚拟机会变得更慢? (2认同)