2019年4月22日星期一

Linux Load Average过高多少合适?CPU Load使用率检查

原文链接:https://www.chenweiliang.com/cwl-1027.html


如果你的计算机(电脑)速度很慢,你可能需要检查是否系统高负载?


最近,有位网络营销人员表示,他所负责的电商网站,前段时间出现状况无法访问……


该网站基于WordPress建站,在Linux VPS服务器搭建。


登录Linux VPS服务器后台查看问题,发现load average平均负载非常高,达到10.0以上。


在Linux系统上,我们通常使用uptime命令来查看它(W命令和top命令也可用)。


此外,它们也适用于Apple的Mac电脑。


一、检查系统负载


在SSH终端窗口中,键入以下命令 ▼


uptime

系统将返回一行信息 ▼


检查系统负载:在SSH终端窗口中,键入以下命令


该行的后半部分显示“load average”,表示“系统的平均负载”。


  • 内有3个数字,我们能由此确定系统负载是大还是小?

“load average”,表示“系统的平均负载”。内有3个数字,我们能由此确定系统负载是大还是小


为什么有3个数字?


  • 它们代表系统的平均负载,分钟为1分钟,5分钟和15分钟。

  • 如果继续查看,它还会告诉你当CPU完全空闲时,平均负载为0;

  • 当CPU工作负载饱和时,平均负载为1。

CPU是什么意思?


  • CPU就是中央处理器。

  • (英文Central Processing Unit,CPU)

  • CPU是一台计算机的运算核心和控制核心。

显然,“load average”的值越低,例如0.2或0.3,意味着计算机(电脑)的工作量越小,系统负载越轻。


  • 但是,什么时候能看到系统负载很严重?

  • 到底是等于1时?或是等于0.5?还是等于1.5?

  • 如果这三个值在1分钟,5分钟和15分钟内不同,我该怎么办?

二、类比


要确定系统负载是否过重,你必须了解load average(平均负载)的真实含义。


接下来,陈沩亮将会用最通俗易懂的语言,来解释这个问题。


首先,我们假设在最简单的情况下,你的计算机只有一个CPU,所有运算操作必须由该CPU完成。


让我们将这个CPU想象成一座桥梁:


桥上只有一条车道,所有车辆都必须越过这条车道。


(显然,这座桥只能用于一个方向。)


当系统负载为0时,表示桥上没有汽车 ▼


当系统负载为0时,表示桥上没有汽车


系统负载为0.5,这意味着桥上有一半的汽车 ▼


系统负载为0.5,这意味着桥上有一半的汽车


系统负载为1.0,这意味着桥的所有部分都有汽车,这意味着桥是“满的” ▼


系统负载为1.0,这意味着桥的所有部分都有汽车,这意味着桥是“满的” 


  • 但必须指出的是,在此桥梁仍然可以顺利通过。

系统负载为1.7,这意味着车辆太多,桥梁已满(100%)。


  • 等待桥梁的车辆占桥梁车辆的70%。

通过类比,以此类推,系统负载为2.0:


  • 意味着有许多在等待的车辆和桥面一样多。

  • 系统负载为3.0,意味着等待桥梁的车辆是桥面的两倍。

  • 当系统负载大于1时,后方车辆必须等待;

  • 系统负载越大,等待过桥的时间越长▼

系统负载越大,等待过桥的时间越长


  • CPU的系统负载,基本上等于上述模拟桥的容量,这是CPU的最大工作量。

  • 桥上的车辆是等待CPU处理的过程(process)。

假如CPU每分钟最多处理100个进程,则系统负载为0.2,这意味着CPU在这1分钟内仅处理20个进程;


系统负载为1.0意味着CPU在这1分钟内处理100个进程;


1.7这意味着除了CPU在处理的100个进程外,还有70个进程在等待CPU处理。


为了顺利运行计算机,系统负载不应超过1.0,因此无需等待任何进程,并且可以首先处理所有进程。


显然,1.0是一个关键值。


如果超过此值,则系统不处于最佳状态。你必须干预。


三、系统负载load average多少合适?


1.0是系统负载的理想值吗?


不一定,系统管理员往往会留下一点空间。


当此值达到0.7时,你应该知道是这样的:


  • 当系统负载继续大于0.7时,你必须开始调查问题,并防止情况恶化。

  • 当系统负载继续大于1.0时,你必须找到解决方案,并降低该值。

  • 当系统负载达到5.0时,表明系统存在严重问题,并且长时间没有响应,或几乎崩溃。你不应该让系统达到此值。

四、多个CPU处理器


以上是假设你的计算机(电脑)只有一个CPU。


如果你的计算机(电脑)安装了2个CPU,会发生什么?


2个CPU意味着计算机(电脑)的处理能力提升了一倍,并且可以同时处理的进程数量翻了一倍。


陈沩亮在此仍然使用大桥来做类比,2个CPU意味着大桥有2个通道,通车容量加倍 ▼


陈沩亮在此仍然使用大桥来做类比,2个CPU意味着大桥有2个通道,通车容量加倍


  • 因此,2个CPU表示系统负载能达到2.0,并且每个CPU达到100%的工作负载。

  • n.0个CPU的电脑,可接受的系统负载最大为n.0个CPU。

五、多核CPU处理器


芯片供应商通常在1个CPU内部,包含多个CPU内核,被称为“多核CPU”。


在系统负载方面,多核CPU类似于多CPU。


因此,在考虑系统负载时,必须考虑你的计算机有多少个CPU?并且每个CPU都有多少个核心?


然后,通过将系统负载除以核心总数,只要每个核心的负载不超过1.0,计算机就会如常运行。


如何知道一台电脑有多少CPU核心?


使用命令,允许你查看CPU信息 ▼


cat /proc/cpuinfo

直接返回CPU的核心总数的命令 ▼


grep -c 'model name' /proc/cpuinfo

六、load average时间该看哪个?


最后一个问题:


“load average”平均负载,总共返回三个平均值:


  • 1分钟系统负载、5分钟系统负载、15分钟系统负载。

我应该参考哪个值?


  • 如果系统负载仅在1分钟内大于1.0,则其他2个时间段小于1.0,这表明这只是暂时现象,问题并不严重。

  • 如果平均系统负载在15分钟内(提高CPU核心数量后)大于1.0,则问题仍然存在,而不是暂时现象。

  • 因此,你应该主要观察“15分钟系统负载”作为计算机(电脑)如常运行的指示器。



欢迎转载《Linux Load Average过高多少合适?CPU Load使用率检查
陈沩亮版权所有,转载请注明出处链接:https://www.chenweiliang.com/cwl-1027.html


网站地址:https://www.chenweiliang.com/



欲学更多秘技,请关注微信公众号:cwlboke

没有评论:

发表评论