故事的开头是这样的:
一天我正在吃饭,突然就收到了服务器告警(cpu high load),吓的我饭也没吃好,只吃了三碗就回去处理故障了,我在监控上看到了这样子的图:
看见了吧,吃饭那段时间cpu一下子就剩下50%了。。。。
然后再进系统看看top有没有什么异常:
当时圈圈时的值是很高的,所以就引入了AWS stolen CPU
翻译过来就是,aws偷了我们的cpu.....
通俗的讲:
假如aws给实例分配了100个资源,但是这些资源有时候被hypervisor用于处理其它任务,从实例角度来讲,资源被占用,cpu使用率升高。但是从aws的cloudwatch来讲,它允许实例使用100个资源,但实际上此实例并没有使用那么多。结果就是我们自定义的监控告警,而cloudwatch监控是正常的。
反正aws也不地道啊,我不管,这就是超卖了,怎么解决?把实例stop & start了,这样实例可能会在新的物理机上启动,问题暂时解决。