运维工程师在日常运维中经常使用w、top、uptime等命令来查看系统当前运行的负载情况。那么作为运维工程师是如何通过以上命令来判断系统当前负载是否已经达到极限了呢?为此笔者总结了一下如何通过loadaverage返回的数据来判断系统运行情况。
什么是Load?什么是Load Average? Load用最通俗的语言说就是当前cpu需要干的工作量的多少。简单的说是进程队列的长度。 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列
r 列表示运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu。
三、memory列
四、IO列
五、cpu列 查看磁盘负载iostat 每隔2秒统计一次磁盘IO信息,直到按Ctrl+C终止程序,-d 选项表示统计磁盘信息, -k 表示以每秒KB的形式显示,-t 要求打印出时间信息,2 表示每隔 2 秒输出一次。第一次输出的磁盘IO负载状况提供了关于自从系统启动以来的统计信息。随后的每一次输出则是每个间隔之间的平均IO负载状况。 [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系统已经满负荷,该磁盘可能存在瓶颈。Idle如果长期大于70% IO压力就比较大了,这时一般读取速度有较多的wait. |
|