全方位解读"CPU load average"

前一段时间,有同事因为“CPU负载到达5算不算高”的问题争论了一番,看似简单的一个问题表明了我们并没有真正理解服务器的CPU负载。

如果你的线上服务出现性能问题,那么检查机器的CPU负载情况是必不可少的一个环节。

我们通过简单执行uptime命令就可以知道服务器当前的CPU负载情况。

现在我们来看一个简单的例子,

load average:  1.14, 0.7, 4.06

上面的load average从左到右显示的分别是最近1分钟,5分钟,15分钟的CPU负载情况。

接下来是非常关键的一点,当前的CPU负载高还是不高,只看上面的数据是不行的,还要看服务器有多少个CPU

假设当前服务器只有一个CPU,那么上面的"load average"就告诉我们在最近一分钟内,平均有0.14个进程在等待CPU;最近五分钟内,CPU有30%的idle时间;而最近15分钟,平均有3.06个进程在等待CPU。而当服务器有4个CPU的时候,则是另外一番景象。

因此,在讨论CPU负载高还是不高的时候,你必须知道服务器的CPU数量,就像上面的例子一样,如果是只有一个CPU的服务器,那么它的CPU显然已经过载了,但是对于有个8个CPU的服务器来说还不是问题。

另外,通过"load average"中的三个数字,我们还可以了解到当前服务器的负载的变化趋势,如果1分钟的CPU负载 > 5分钟的CPU负载,说明服务器目前处在CPU负载高峰期;而如果1分钟的CPU负载 < 5分钟的CPU负载,则说明服务器的CPU负载高峰期刚刚过去了,如果是你处理了什么性能问题,则表明该处理已经显现成效了。

原文地址:https://www.cnblogs.com/kaiblog/p/5720161.html