【问题标题】:The steal time was too high in AWS EC2AWS EC2 中的窃取时间太长
【发布时间】:2016-03-15 16:27:40
【问题描述】:

我已经使用 AWS EC2 部署了一个 Python 应用程序,它使用来自 Apache Kafka 的数据。而最近几天,我发现当传入的数据变大时,CPU的窃取时间会变得太高(大约35%)。

使用的EC2实例是t2.medium,2个CPU和4G内存。任何人都可以告诉我为什么会发生这种情况,有什么办法可以避免。

【问题讨论】:

  • 请发布您可以在 EC2 控制台中找到的 CPU 信用余额的 Cloudwatch 图表,其时间段与您显示的图表中的时间段相当。这应该很好地解释了您所看到的内容,并且我希望它会确认@user567797 的答案,即您在这些时间已用完积分。请注意,您越用力推送一个已用完的实例,“被盗”的时间就越多,因为当周期空闲时,就没有必要窃取了。偷窃只会出现在有需求的情况下。

标签: python amazon-ec2


【解决方案1】:

如果不查看您的应用程序和指标就很难发表评论。我的猜测是 T2 实例是 burstable performance instances 它们在正常条件下提供基准 CPU 性能。但是当负载增加时,Burstable Performance Instances会爆发出来,这意味着要提高CPU性能。

CPU Credit 告诉实例中 CPU 的爆发量。您可以使用此 CPU Credit 来提高 Burst 期间的 CPU 性能。

当您的 CPU 积分用完时,它会降低整体性能,而不仅仅是阻止您突增性能。事实上,您会观察到几乎 90+% 的 CPU 窃取时间,这意味着当您的信用不足时,管理程序不允许您的实例在 CPU 上运行。你可以看到更多http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/t2-instances.html#t2-instances-cpu-credits

希望这会有所帮助。

【讨论】:

  • 那或者只是试图在 CPU 受限的实例上做太多事情,可能是因为邻居很忙。根据我的经验,CPU 窃取对于 *.large 和更大的实例来说不是问题。
  • @user567797 我怀疑你是对的,但有一点需要澄清的是,t2 实例并不完全是“可突发的”。核心专用于虚拟机,并始终全速运行,直到您的余额接近 0。在 1 个核心的 100% 的情况下,每 1 分钟消耗 1 个积分。每分钟获得一小部分积分,在 t2.medium 的情况下,足以维持 20% 的连续性,并且这里的基线看起来仅略低于此……确认这看起来像低积分余额。
猜你喜欢
  • 2016-12-19
  • 1970-01-01
  • 2012-09-08
  • 2017-12-20
  • 1970-01-01
  • 2020-02-13
  • 2011-07-03
  • 2015-07-05
  • 1970-01-01
相关资源
最近更新 更多