1.平均负载的概念
有时候我们会觉得系统响应很慢,但是又找不到原因,这时就要查平均负载了,看它是否有大量的进程在排队等待。特定的时间间隔内运行队列中的平均进程数可以反映系统的繁忙程度,所以我们通常会在自己的网站或系统变慢时第一时间查系统的负载,即CPU的平均负载。
2.查看平均负载
究竟应该如何查看平均负载呢?最简单的命令是uptime,如下所示:
[root@localhost ~]# uptime 11:31:11 up 11 days, 19:01,2 users,load average: 0.02, 0.01, 0.00
目前的主流服务器都是双4核,有相当强悍的CPU,做一般的应用服务的话,Linux系统的负载这块倒不用我们担心。
还可以用w命令来查看,顺便可以查看一下系统当前有哪些用户,他们占用了哪些终端,如下所示:
[root@localhost ~]# w
命令显示结果如下所示:
11:33:00 up 11 days, 19:03,2 users,load average: 0.00, 0.00, 0.00 USER TTYFROMLOGIN@ IDLE JCPU PCPU WHAT root pts/1113.57.224.3 09:032:11m0.04s0.04s -bash root pts/2113.57.224.3 11:310.00s0.02s0.00s w
另外,还有动态命令top,这个命令也可以反映系统负载情况,在下面的命令提示中,我们只关心加粗字体部分。
[root@localhost ~]# top
系统会动态地显示内容,结果如下所示:
top – 15:01:25 up 12 days,3:46,2 users,load average: 1.76, 2.14, 2.20 Tasks: 116 total, 1 running, 115 sleeping, 0 stopped, 0 zombie Cpu(s): 47.5% us, 14.6% sy,0.0% ni, 37.6% id,0.3% wa,0.1% hi,0.0% si Mem: 8180164k total,7673268k used, 506896k free,74592k buffers Swap:0k total,0k used,0k free,4613728k cached
第一行内容正是系统目前的负载情况,再通过uptime查看一下。
[root@ud50053 ~]# uptime
结果如下所示:
15:02:50 up 12 days,3:48,2 users,load average: 1.75, 2.07, 2.17
原来它所表示的是过去的1分钟、5分钟和15分钟内进程队列中的平均进程数量。
这里需要注意的是load average这个输出值,这三个值的大小一般不能大于系统逻辑CPU的个数,例如,本输出中系统有4个逻辑CPU,如果load average的三个值长期大于4时,说明CPU很繁忙,负载很高,可能会影响系统性能,但是偶尔大于4时,倒不用担心,一般不会影响系统性能。相反,如果load average的输出值小于CPU的个数,则表示CPU还有空闲,比如本例中的输出,CPU是比较空闲的。
这时候可以结合vmstat命令来判断我们的系统是否过于繁忙,如果确定很繁忙的话,就要考虑是否更换服务器或增加CPU的个数了。总结如下:
如果r经常大于系统的逻辑CPU个数,且id经常少于50,则表示CPU的负荷很重。