我有一堆 t2.small EC2 实例运行托管名为 thumbor 的图像处理库,用于简单的动态图像调整大小。原稿从 S3 加载。在实例前面我有一个 EC 负载均衡器。我在服务器中安装了 New Relic 服务器监控。
问题 随机的时候,我的服务器突然开始体验极高的 avg。响应时间。如果我查看 New Relic 中的统计数据,我唯一看到的是服务器 CPU 持续出现峰值,报告“被盗”的 CPU。
我的服务器似乎有足够高的容量,同时吞吐量并没有出现任何极端的峰值。
我注意到,如果我再次停止/启动服务器。然后被盗的 CPU 消失了,它们再次运行良好 - 直到下一次 - 可能是数小时或数天。
为什么会发生这种情况,我该怎么办?
Amazon 的 t 系列实例使用 CPU 使用配额系统。当您达到配额时,您开始看到被盗百分比上升。您对此无能为力,这是产品的结构性问题。
正如其他人所说,您很可能会用完CPU 积分。基本上,使用 T2 实例,您可以获得 CPU 的一小部分,在 t2.small 的情况下获得 20% 的核心,并且能够突增到一个或两个核心(取决于您的实例类型),直至达到您的极限CPU 积分。在大多数情况下,您也不应该在负载均衡器后面使用 T 实例,因为性能可变,它可能会导致难以诊断的奇怪问题。
如果您的积分用完,您需要迁移到更大的 T 实例,或迁移到对内核具有一致访问权限的实例。C(计算优化)或 M(通用)会更合适。
您可以使用 CloudWatch 监控您的 CPU 积分。这将帮助您决定是使用更大的 T 实例还是 C/M 实例。