【问题标题】:Amazon AWS micro instance with 100% cpu and unresponsive具有 100% cpu 且无响应的 Amazon AWS 微型实例
【发布时间】:2013-12-06 16:14:37
【问题描述】:

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

实例是 ubuntu server 13.04,它有一个基本的 LAMP,仅此而已。 我有一个 cron 工作每隔几分钟执行一次 ping 以保持 VPN 隧道正常运行,但它不应该这样做。

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

知道背后的原因是什么吗?我猜这与亚马逊限制实例有关,但奇怪的是它在 8 小时内使用 100% 的 cpu。

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

我这里不能附图片,所以我发布一个链接

100% cpu utilization

编辑

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

【问题讨论】:

  • 你在用 LAMP 运行什么?
  • 一个通过 VPN 另一端的 SMPP 服务器发送 SMS 的 php 脚本

标签: amazon-web-services amazon-ec2 throttling


【解决方案1】:

作者注,2019:这篇文章最初写于 2013 年,是关于 t1.micro 实例类型的。当前的EC2 free tier 现在允许您选择 t1.micro 或 t2.micro 实例类。与 t1.micro 的间歇性硬钳位行为不同,t2.micro 以满负荷持续运行,直到您的 CPU credit balance 接近耗尽,并且降级更加优雅。


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

请注意显示“CPU 级别受限”的图表。我已经对此进行了测量,如果您在微型实例上消耗 100% cpu 超过大约 15 秒,则会开始节流,并且您的可用周期在接下来的 2-3 分钟内从 2 个 ECU 下降到大约 0.2 个 ECU(大约 200MHz) ,此时循环重复,如果您仍在努力拉动处理器,您将在几秒钟内再次受到限制。

在节流期间,与获得峰值性能时相比,您只能获得约 1/10 的周期,因为虚拟机管理程序“窃取”了其余部分¹...所以您仍然会看到您使用的是可靠的100%...因为你使用了所有可用的东西。将微型固定在天花板上并不需要太多。或者地板......所以要么你对实例类的要求太多,要么你有一些意外地使你的 CPU 最大化。

在机器响应时建立 SSH 连接,开始“top”运行,然后保持连接,这样当它开始变慢时,你已经有了工具,你需要使用它来找出 cpu 是什么猪。


¹ 管理程序窃取其余部分: 一个常见的误解是,管理程序从 EC2 实例中窃取的时间(在 top 和类似实用程序中可见)是由“嘈杂的邻居”引起的-- 同一硬件上的其他实例竞争 CPU 周期。这不是被盗周期的原因。对于一些较旧的实例系列,例如m1,如果 AWS 已在处理器比为实例类指定的处理器更快的主机上预置您的实例,则会看到被盗周期;周期被盗,因此实例的性能与您支付的价格相匹配,而不是实际底层硬件的性能。 EC2 实例不共享虚拟 CPU 资源下的物理资源。

【讨论】:

  • 我没有在实例中做任何 CPU 密集型操作,这就是为什么我觉得这很奇怪。
  • 我尝试了 top 命令,但由于其他原因导致连接中断(wifi 低:/),所以我现在再次尝试,但我必须等待一段时间
  • 如果您确实按照您的指示运行“LAMP”,那么后台可能会发生任何数量的事情。如果您的连接在其他方面不可靠,您可能应该在其他地方使用 ssh,启动“屏幕”,然后在屏幕内,将您的 ssh 连接到微型计算机。如果您断开连接,screen 将允许您使用 screen -d -r 回收另一个 shell。
  • 我达到了 1GB 的内存限制,我看到它发生在 htop 上(在我将 micro 升级到 small 之前)。实例列表监控显示 CPU 增加且没有关于 RAM 的信息。是不是当其他人报告 CPU 使用率很高时,真正的触发因素是 RAM 最大化,而高 CPU 使用率只是在那之后才开始出现?让许多人相信他们以某种方式最大化了 CPU。
【解决方案2】:

运行top,看看st(或窃取)有多高。如果st 为 97%,那么您将受到限制并且只有 3% 的 CPU 可以使用。你不需要做任何 CPU 密集型的事情来让它变慢!

如果是这种情况并且您无法更改所需的 CPU 数量,则唯一的解决方法是升级到小型实例。小型实例没有那么多限制。

http://theon.github.io/you-may-want-to-drop-that-ec2-micro-instance.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    • 1970-01-01
    • 2015-08-16
    • 2014-05-31
    • 2012-12-08
    • 1970-01-01
    • 2015-12-01
    相关资源
    最近更新 更多