为了测试我的AutoScaling组,我想模拟一个巨大的CPU使用率,以便创建一个新实例(基于我在Cloudwatch中配置的指标:平均CPU> = 60)
EC2实例是一个简单的t2.micro,我使用了Stress命令:Stress -c 1 -t 400s
我首先可以看到该进程已经开始并且CPU使用率为100%,但是问题是它不是恒定的。有时它掺杂到10%,有时甚至达到100%,并且在Cloudwatch监视中,即使经过5分钟的压力,CPU的平均使用率也低于20%!
我尝试了其他参数(重音-c 2或重音-c 4),这是同一回事。我也尝试使用此命令:yes> / dev / null&
Cloudwatch始终看不到100%的CPU使用率。
出什么问题了?亚马逊是否提供任何保护措施来限制CPU的巨大负载?
感谢您的帮助。
答案 0 :(得分:4)
Tx实例是“突发性能实例”,这意味着您不能一直获得100%的CPU。这是以低时价交换的权衡。
CPU由资源积分管理。您的实例每分钟都会获得CPU积分。您的实例将以1%的使用率(100%)消耗1个CPU信用。这意味着当您的实例未得到充分利用时,它将累积CPU信用,以后可以使用。如果没有可用的信用额度,您的CPU将受到限制。
CPU积分数和基准性能取决于确切的实例类型。
详细信息在这里:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-credits-baseline-concepts.html
底线:不要在Tx实例类型上运行CPU基本压力测试。这些实例类型专为低/中等基准而设计,偶尔会有性能爆发。
答案 1 :(得分:1)
根据AWS,t2.micro
是一个可爆发的性能实例。 documentation指出:
T2实例是可突发性能实例,它们提供CPU性能的基线水平,并且能够突发超过基线。
一旦达到100%的利用率,就有可能分配额外的CPU。还要注意,这些实例是虚拟的,因此不能始终依赖所报告的vCPU利用率。
我建议您尝试使用通用M5
。在这种情况下,您应该能够产生所需的行为。