什么是Load Average
在UNIX系统中,系统负载Load是对当前CPU工作量的度量,表示当前正在运行的进程数加上等待(排队)运行的进程数之和,也被称为有运行队列长度。
Load Average 表示一段时间 (1 分钟、5分钟、15分钟) 内的平均 Load 。
查看负载方式
uptime、top、w命令都可以查看机器的负载信息。
uptime
uptime命令显示的信息依次为:当前时间、系统运行时长、当前登陆用户数量、系统在最近1分钟、5分钟和15分钟内的平均负载。
1 2
| $ uptime 22:37:35 up 331 days, 11:15, 3 users, load average: 0.79, 1.17, 1.33
|
w
w命令的主要功能是显示目前登入系统的用户信息。显示信息依次为:当前时间,系统运行时长,当前登陆用户数量,系统在最近1分钟、5分钟和15分钟的平均负载。然后是每个用户的各项数据,项目显示顺序如下:登录帐号、终端名称、远程主机名、登录时间、空闲时间、JCPU、PCPU、当前正在运行进程的命令行。
1 2 3 4 5 6
| $ w 22:45:27 up 331 days, 11:22, 3 users, load average: 0.99, 0.83, 1.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/2 192.168.98.160 19:31 3:09m 0.08s 0.08s -bash root pts/3 192.168.98.160 19:36 2:20m 0.06s 0.06s -bash root pts/5 10.1.0.4 22:45 7.00s 0.04s 0.00s w
|
top
top是常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| $ top top - 23:42:47 up 331 days, 12:20, 4 users, load average: 0.30, 0.63, 0.74 Tasks: 239 total, 1 running, 238 sleeping, 0 stopped, 0 zombie %Cpu(s): 2.3 us, 0.8 sy, 0.0 ni, 97.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 16328004 total, 10506952 free, 2409532 used, 3411520 buff/cache KiB Swap: 16777212 total, 15103752 free, 1673460 used. 13547832 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1764 gdm 20 0 799280 85356 524 S 12.5 0.5 6710:51 gsd-color 1111 root 20 0 231288 2292 772 S 6.2 0.0 1007:47 snmpd 7283 root 20 0 162300 2440 1544 R 6.2 0.0 0:00.01 top 1 root 20 0 191864 3316 1608 S 0.0 0.0 164:43.22 systemd 2 root 20 0 0 0 0 S 0.0 0.0 3:15.58 kthreadd 4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 6 root 20 0 0 0 0 S 0.0 0.0 42:54.28 ksoftirqd/0 7 root rt 0 0 0 0 S 0.0 0.0 6:04.06 migration/0
|
机器正常负载范围
在单核处理器时的一些经验法则
当系统负荷持续大于0.7,你必须开始调查了,问题出在哪里,防止情况恶化。
当系统负荷持续大于1.0,你必须动手寻找解决办法,把这个值降下来。
当系统负荷达到5.0,就表明你的系统有很严重的问题,长时间没有响应,或者接近死机了。你不应该让系统达到这个值。
在多核处理器时的负载阈值是不一样的
对一般的系统来说,是根据cpu数量去判断系统是否已经过载(Over Load)的。
如果我们认为0.7算是单核机器负载的安全线的话,那么四核机器的负载最好保持在3(4*0.7 = 2.8)以下。
根据三个Load Average来分析负载趋势
一般情况下,1分钟系统负荷表示最近的暂时现象。15分钟系统负荷表示是持续现象,并非暂时问题。
如果load15较高,而load1较低,可以认为情况有所好转。反之,情况可能在恶化。
负载过高排查思路
建议从以下几个方面排查代码问题:
- 是否有内存泄露
- 是否有大字段的读写
- 是否有死锁发生
- 是否由SQL语句导致
参考资料
linux–load解释_那些年匆匆-CSDN博客
什么是负载?如何查看服务器的机器负载情况? - 电子发烧友网 (elecfans.com)
如何查看服务器当前的负载信息_mal327的专栏-CSDN博客_查看服务器网络负载
理解Linux系统负荷 - 阮一峰的网络日志 (ruanyifeng.com)
Understanding Linux CPU Load - when should you be worried? | Scout APM Blog
Linux CPU负载过高问题排查 - 云+社区 - 腾讯云 (tencent.com)