- 论坛徽章:
- 0
|
在系统运行效率慢之前和运行效率慢的时候分别执行sar操作,
对比二者的结果可以比较快的判断出问题所在
第1步:
# sar 1 5
09:35:13 %usr %sys %wio %idle (-u)
09:35:14 17 0 0 83
09:35:15 5 0 0 95
09:35:16 5 0 0 95
09:35:17 5 0 0 95
09:35:18 5 1 0 94
Average 7 0 0 92
对比系统变慢之前和慢之间分别执行上述命令的结果可以初步定位系统主要的瓶颈
如果%usr的平均值高,表示系统等待用户程序的比例高
(比如排序,数据处理,数据计算等)
罪魁祸首:高峰期不必要的程序运行,CPU速度慢或数量不足,
效率低下的用户程序或守护处理进程以及错误的进程优先级nice
如果%sys高,表示系统等待设备驱动系统调用的比例高
罪魁祸首:效率低下的设备驱动程序,硬件故障导致的假中断,
CPU速度慢或数量不足
如果%usr和%sys都高,表示系统等待用户或内核产生的系统调用比例高
罪魁祸首:CPU速度慢或数量不足
如果%wio高,表示系统等待硬盘io存取数据的比例高
罪魁祸首:硬盘缓存不足(NBUF/NHBUF配置不足),硬盘慢,
内存不足,运行程序有内存泄漏或占用过多内存
第2步:
一 如果%usr高:
1)检查占用CPU的进程
# ps -el | more
F S UID PID PPID C PRI NI ADDR SZ TTY TIME CMD
71 S 0 0 0 0 95 20 fb117000 0 ? 00:00:01 sched
20 S 0 1 0 0 66 20 fb117158 148 ? 00:00:00 init
...
20 S 0 347 1 0 76 24 fb119db0 312 ? 00:00:00 snmpd
20 S 17 349 1 1 66 20 fb119f08 156 ? 01:05:53 deliver
20 S 0 413 410 0 75 20 fb11a060 128 ? 00:00:00 lockd
检查C和TIME列的值,如果哪行TIME(单位是分:秒:百分之一秒)异常的高,并且C是>0的数字,
那么这个CMD显示的进程程序就是太耗费资源的元凶,
上面所是的例子deliver表示累计占了1分钟CPU,还算正常,假如是1000:05:53那么它就是问题所在了
也可用who命令检查,比如
# w
4:41pm up 5:04, 3 users, load average: 0.00 0.00 0.00
User tty login@ idle JCPU PCPU what
root tty01 11:51am 21:38 bash
root tty03 4:31pm 9 -sh
root ttyp1 1:55pm w
# who -u | sort -k 6 -r
root tty03 Jul 6 16:31 0:09 1774
root ttyp1 Jul 6 13:55 0:01 3902
root tty01 Jul 6 11:51 . 1773
2) 检查系统调用的情况
# sar -c 1 5
SCO_SV tuvok 3.2v5.0.5 i80386 06/21/2001
09:55:08 scall/s sread/s swrit/s fork/s exec/s rchar/s wchar/s (-c)
09:55:09 1216 67 12 0.99 0.99 178441 3988
09:55:10 147 31 6 0.00 0.00 168723 8421
09:55:11 74 27 4 0.00 0.00 163644 3342
09:55:12 245 37 6 0.00 0.00 171821 8928
09:55:13 151 29 4 0.00 0.00 163770 3468
Average 367 38 6 0.20 0.20 169280 5629
对比系统变慢之前和慢之间分别执行上述命令的结果,
如果系统变慢之后scall/s列的值增大很多,表示
.程序突然被频繁使用
.系统运行的程序太多了,可用ps命令确认.
如果系统变慢之后fork/s,exec/s或sread/s,swrit/s异常的高,
检查fork过多,读写操作频繁的程序,优化代码降低资源占用
二 如果%sys高
如果是多CPU系统且系统有SMP支持,执行下列命令查看是否有设备在发送成千上万的中断
OpenServer5执行: #sar -j 1 5
UnixWare7/OpenUnix8执行: #sar -P ALL 1 5
检查访问磁带机,第3方smart boards以及非硬盘设备的设备的程序
三 如果%usr和%sys都高
1) 检查系统队列
# sar -q 1 5
SCO_SV lunasco 3.2v5.0.4 Pentium 06/21/2001
10:46:29 runq-sz %runocc swpq-sz %swpocc (-q)
10:46:30 3.0 100
10:46:31
10:46:32 1.0 100
10:46:33 1.0 100
10:46:34 1.0 100
Average 1.5 100
其中time平均值应该
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/21863/showart_142451.html |
|