亚马逊AWS微型实例CPU利用率达到100%且无响应

4

我一直有一个问题,我的aws ec2 ubuntu实例总是在一定时间内(约8小时)始终有100%的cpu利用率,直到我重新启动它。

该实例是Ubuntu Server 13.04,只安装了基本的LAMP。

我有一个cron工作每隔几分钟ping一次以保持VPN隧道通畅,但它不应该这样做。

当它处于100% cpu利用率时,我无法ping它,ssh进入它或浏览它,但它不会拒绝连接,只是一直在“尝试”。

有什么想法背后的原因吗?我猜测这与Amazon限制该实例有关,但是它持续8个小时的100% cpu利用率很奇怪。

这是该实例的CPU日志,其他指标似乎都正常。

我不能在这里附加图像,因此我正在发布一个链接。

100% CPU利用率

编辑

之前我的其他实例也出现过这种情况,现在我有一个Amazon Linux AMI运行了4天的100%,那个只有tomcat,没有部署任何应用程序。 我刚刚意识到它无响应,我正在终止它。


你用LAMP跑什么? - datasage
一个PHP脚本,通过VPN的另一端的SMPP服务器发送短信。 - Asfura
2个回答

6
2019年作者注:此文章原为2013年撰写,介绍的是t1.micro实例类型。当前的EC2免费套餐现在允许您选择使用t1.micro或t2.micro实例类型。与t1.micro的间歇性硬限制行为不同,t2.micro连续以满载运行直到您的CPU信用余额接近耗尽时,它会更优雅地降级。

这是预期的行为。请参阅Linux实例的EC2用户指南中的t1.micro Instances

请注意标有“ CPU级别受限”的图表。我已经测试过,如果您在微实例上占用100%的CPU超过约15秒钟,就会触发限流并将可用周期从2 ECU降至大约0.2 ECU(大约200MHz)下降,在接下来的2-3分钟内,这种情况会重复发生,并且如果您仍在处理器上努力工作,则在几秒钟内再次被限制。

在限流时间期间,您只能获得与最高性能相比约1/10的周期,因为虚拟机“窃取”了其余部分¹...因此仍将看到您正在使用100%...因为您使用了所有可用的。 将微型实例固定到天花板或地板并不需要太多。 因此,要么您对实例类型要求过高,要么您有某些意外地将CPU最大化的应用程序。

在机器响应时建立SSH连接,运行“top”,然后保持连接,以便在它开始变慢时,您已经有了需要使用的工具来找出是什么原因导致了CPU占用率高的问题。


¹ 虚拟机窃取其余部分:一种常见的误解是EC2实例被虚拟化层窃取的时间(可见于top和类似的实用程序)是由于“吵闹的邻居”——同一硬件上竞争CPU周期的其他实例。这不是偷走周期的原因。对于一些旧的实例系列,例如m1,如果AWS将您的实例配置在处理器速度超过指定的实例类型的主机上,则会看到窃取的周期;偷取周期是为了让实例的性能与您支付的相匹配,而不是实际底层硬件的性能。EC2实例不共享虚拟CPU资源下面的物理资源。


1
我在实例中没有进行任何CPU密集型操作,这就是为什么我认为这很奇怪。 - Asfura
2
我尝试了top命令,但由于其他原因(低wifi :/),连接中断了,所以现在我正在尝试再次运行它,但我需要等一段时间。 - Asfura
如果您确实正在运行所述的“LAMP”,那么后台可能会发生任何事情。如果您的连接不可靠,您可以尝试在其他地方使用ssh,启动“screen”,然后在screen中建立与微控制器的ssh连接。如果您断开连接,screen将允许您通过screen -d -r重新获取其他shell。 - Michael - sqlbot
我撞上了1GB内存限制,并且在htop中观察到了这一情况(在将微型实例升级为小型实例之前)。实例列表监视显示CPU使用率不断增加,但没有关于RAM的信息。是否可能当其他人报告高CPU利用率时,真正的触发器是内存耗尽,而高CPU使用率只是在此之后开始出现?这导致许多人认为他们已经将CPU最大化。 - Firsh - justifiedgrid.com

2
运行top命令并查看st(或steal)的高度。如果st达到97%,则您正在被限制,只有3%的CPU可供使用。即使不需要做任何CPU密集型操作,这也会导致速度变慢!如果情况如此,并且您无法更改所需的CPU数量,则唯一的解决方法是升级到小型实例。小型实例没有那么多限制。 http://theon.github.io/you-may-want-to-drop-that-ec2-micro-instance.html

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接