为什么要监控系统的平均负载?
有时我们会感觉到系统响应很慢,但是又找不到原因,这时要查平均负载,是否有大量的进程在排队等待
1,平均负载是什么?
特定时间间隔内运行队列中的平均进程数,好象还不够明白:就是进程队列的长度,有多少个进程在排队等待运行
2,什么是"进程队列"?
一个进程满足以下条件就会位于进程队列中
1,它没有在等待I/O操作的结果
2,它没有主动进入等待状态(即没有调用wait)
3,它没有被停止
3,如何查看平均负载?
最简单的命令是uptime
例子:
[lhd@localhost ~]$ uptime
00:44:22 up 1:17, 3 users, load average: 8.13, 5.90, 4,94
4,显示的内容是什么意思?
load average: 8.13,5.90,4,94
显示的是过去的1,5,15分钟内进程队列中的平均进程数量
5,如何衡量当前系统是否负载过高?
如果每个cpu(可以按CPU核心的数量计算)上当前活动进程数不大于3,则系统性能良好,
不大于4,表示可以接受
如大于5,则系统性能问题严重
上面例中的8.13,如果有2个cpu核心,则8.13/2=4.065, 此系统性能可以接受
建议设置严格的报警值为: CPU核心的数量
比如:CPU核心数量为2,则设置报警值为2
(这样设置是合理的,因为毕竟不是每个应用都支持多CPU及多核心)
6,查看平均负载的命令
有5个可用:
tload 能够绘制出负载变化的图形
uptime 同时显示开机以来的时间
w 同时显示出已登录的用户
top 这个对资源占用太高,不建议使用
cat /proc/loadavg 通过/proc系统信息得到平均负载
注意:如果你要持续的观察平均负载,建议用 watch uptime 或 watch cat /proc/loadavg
备注:关于watch:每隔一定时间执行指定的程序,并全屏显示结果。时间默认是2秒
--------------------------------------------------------------------
uptime
这个uptime外壳命令产生下列输出:
[pax:~]% uptime |
它显示自从上次系统重启以来,活动的用户进程数量和所谓的平均负荷指标(load average)。
procinfo
在Linux系统上,procinfo命令产生以下输出:
[pax:~]% procinfo |
平均负载指标出现在这个输出的左下角。
w
w(ho)命令产生下列输出:
[pax:~]% w 9:40am up 9 days, 10:35, 4 users, load average: 0.02, 0.01, 0.00 |
请注意,第一行的输出与uptime命令的输出相同。
top
top命令是最近加入到UNIX命令集中的,它通过计算进程消耗CPU的时间来给进程排名。它产生下列输出:
4:09am up 12:48, 1 user, load average: 0.02, 0.27, 0.17 58 processes: 57 sleeping, 1 running, 0 zombie, 0 stopped |
所有这些命令,请注意,输出中都有三个数字报告平均负载。相当普遍的是,这些数字显示出从左至右的降序。但是有时,又是升序排列,正如上面的输出。
没有评论:
发表评论