我有一个运行Windows 2008 R2的微EC2实例。我最近收到了很多高CPU警报,当我登录AWS管理控制台时,我发现我的CPU几乎与100%挂钩。但是,如果我登录到实例并启动任务管理器,我的CPU看起来几乎是空闲的。我已经离开任务管理器一段时间,并使用此屏幕截图显示AWS报告与我的实例看起来正在做什么之间的差异。建议?
(https://s3.amazonaws.com/caskerdbbucket/public/cpu.png)
PS:任务管理器的更新速度设置为“低”
答案 0 :(得分:35)
操作系统公开的数据在Amazon EC2等虚拟化环境中通常不足或误导,报告的百分比取决于您的实例类型和底层处理器核心利用率(通常与虚拟化硬件不匹配)除了其他事项之外,您所看到的内容很可能是由于当前大多数相关的Unix / Linux监控工具中公开的 CPU窃取时间造成的(但不是在Windows上,不幸的是,请参阅我的问题Is there a Windows equivalent of Unix 'CPU steal time'?以获取有关此问题的更多信息) - 请参阅例如{%}}或sar
或<{1}}中的列%steal或st:
st - 偷窃时间
从此虚拟机中“窃取”的CPU数量 由管理程序执行其他任务(例如运行另一个虚拟机) 机)。
博文EC2 monitoring: the case of stolen CPU提供了一个很好的探索和插图:
当top命令显示40%CPU忙时,但CloudWatch说 服务器的最大值是100% - 你选择哪一方?答案是 简单(CloudWatch是正确的,顶部不是)[...]
CPU窃取时间对于您正在使用的EC2实例类型t1.micro特别普遍,它可能会被定义严重限制(通常约为97%的窃取时间!),请参阅{{3} }对于概念的广泛解释和说明 - 特别是Micro Instances部分:
我们希望您的应用程序只消耗一定量的CPU 一段时间内的资源。如果应用程序消耗超过 你的实例分配的CPU资源,我们暂时限制了 实例,因此它在低CPU级别运行。如果您的实例继续 要使用其所有分配的资源,其性能将降低。我们 将增加我们限制其CPU级别的时间,从而增加 允许实例再次爆发之前的时间。 [强调我的]
因此,您可能已经超出了微实例的可持续CPU使用情况配置文件,并且需要调整工作负载或切换到其他实例类型。
答案 1 :(得分:2)
我遇到了同样的问题,花了很多时间才找到解决方案。 在互联网上,我没有找到我的案例,所以我分享。
我在事件列表中发现了许多欺诈性登录尝试。在那种情况下,任务管理器报告了30-40%的CPU使用率(Cloud Watch 100%),并且在进程列表中可以看到一些winlogon.exe。 更改远程桌面端口(默认为3389)后,我没有更多问题。 现在,Cloud Watch中的CPU使用率通常为34-35%。
希望这有帮助。