我如何诊断和修复从内核频繁100%的CPU利用率?

我有一个运行旧的2.6.16内核的Amazon EC2微型实例。 它运行postfix,apache和mysql。 在正常负载下,平均负载在0.05左右,95%的时间以这种方式运行。 但是,一天几次(或多次),CPU使用率将达到100%,系统几乎无法使用。 这通常持续大约5分钟,然后负载恢复正常。

如果在这种情况发生的时候(如果我设法看一下htop(不容易 – 负载很重)),我会发现没有正在运行的任务会导致任何显着的cpu使用情况,导致我相信这一切都必须发生在内核模式下,土地。

我怎样才能诊断这个负载的原因,更重要的是,修复它?

在这段时间内,“iowait”和“steal”CPU时间的百分比是多less?

Iowait表示CPU等待IO请求完成的时间,窃取的百分比表示内核请求的CPU时间,但被pipe理程序拒绝。

EC2 t1.micro实例非常 CPU和IO约束。 他们可能会爆炸很短的时间,之后他们会受到严重的CPU节stream。 下次发生这种情况时,请注意top的输出中的%wa%st 。 我敢打赌,其中的一个或两个都有很高的CPU时间百分比。

为了缓解,您需要findIO和/或CPU负载的来源,或者将实例的大小调整为m1.small