在linux系统中,查看当前运行的负载情况,可以用命令:w、top、uptime等。 本文就介绍下,如何通过loadaverage返回的数据来判断系统运行情况。
什么是Load?什么是Load Average?
Load Average 就是一段时间(1分钟、5分钟、15分钟)内平均负载。
top - 10:02:01 up 180 days, 19:34, 2 users,
load average: 2.77, 2.91, 2.72 以上数据代表1分钟,5分钟,15分钟内的CPU的平均负载。 如果系统cpu超负荷 load average会大于您机器的cpu数量,比如您机器2颗物理cpu在每颗物理cpu上又做了6颗逻辑CPU之后在每颗逻辑CPU上又实现了超线程后,假如此时你在系统中使用cat /proc/cpuinfo |grep 'processor'|wc –l返回24颗,如果load值(15分钟的返回值作为参考依据)长期在24以上,说明系统已经很繁忙了。 当然load值走高也不一定就是cpu资源紧张导致的,我们还需要结合vmstat工具进行确认和判断是cpu不足还是磁盘IO问题又或者是内存不足导致。 那么在Load average 高的情况下,如何确定系统瓶颈呢?
需要借助vmstat工具做进一步分析了。
复制代码代码示例:
[root@localhost ~]# vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 256968 42428 159696 659584 0 0 0 0 0 0 1 0 99 0 0 1 0 256968 42304 159696 659584 0 0 0 0 20689 31827 1 1 98 0 0
一、procs列
二、system 显示采集间隔内发生的中断数
三、memory列
四、swap列
si 由内存进入内存交换区数量。
so由内存交换区进入内存数量。
五、IO列
bi 从块设备读入数据的总量(读磁盘)(每秒kb)。
bo 块设备写入数据的总量(写磁盘)(每秒kb) 这里我们设置的bi+bo参考值为1000,如果超过1000,而且wa值较大应该考虑均衡磁盘负载,可以结合iostat输出来分析。
六、cpu列
cpu 表示cpu的使用状态
us 列显示了用户方式下所花费 CPU 时间的百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序。 sy 列显示了内核进程所花费的cpu时间的百分比。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。
查看磁盘负载iostat
复制代码代码示例:
[root@localhost ~]# iostat -x 1 10
avg-cpu: %user %nice %system %iowait %steal %idle 0.33 0.00 0.08 0.04 0.00 99.55 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 0.00 17.00 0.00 4.00 0.00 168.00 42.00 0.02 4.00 3.00 1.20
如果 %util 长期接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。 |