操作系统公开的数据在Amazon EC2等虚拟化环境中通常不足或具有误导性,并且报告的百分比取决于您的实例类型和底层处理器核心利用率(通常与您从管理程序),除其他外 - 您所看到的很可能是由当今大多数相关 Unix/Linux 监控工具中暴露的相应CPU 窃取时间引起的(但不幸的是,不是在 Windows 上,请参阅我的问题Is there a Windows equivalent of Unix' CPU 窃取时间'?有关此问题的更多信息) - 参见例如列 %steal 或 st in sar
or top
:
st -- 窃取时间
管理程序从该虚拟机“窃取”用于其他任务(例如运行另一个虚拟机)的 CPU 量。
博文EC2 监控:CPU 被盗案例对此主题进行了很好的探索和说明:
当 top 命令显示 40% CPU 繁忙但 CloudWatch 显示服务器已达到 100% 时,您会选择哪一边?答案很简单(CloudWatch 是正确的,top 不是)[...]
CPU 窃取时间对于您正在使用的 EC2 实例类型 t1.micro 来说尤其普遍,根据定义,它可能会受到严重限制(通常约为 97% 的窃取时间!),请参阅微实例以获得对该概念的广泛解释和说明 - 具体而言,实例使用其分配的资源时的部分状态:
我们希望您的应用程序在一段时间内仅消耗一定数量的 CPU 资源。如果应用程序消耗的 CPU 资源超过您的实例分配的 CPU 资源,我们会暂时限制该实例,使其在低 CPU 级别运行。如果您的实例继续使用其分配的所有资源,其性能将会下降。我们将增加限制其 CPU 级别的时间,从而增加允许实例再次爆发之前的时间。[强调我的]
因此,您可能已经超出了微型实例的可持续 CPU 使用情况,需要调整您的工作负载或切换到另一种实例类型。