vmstat参数:

procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----

 r  b   swpd   free   buff  cache     si   so    bi    bo   in    cs us sy id wa

 0  1    208 1685712 213052 3883248    0    0     8     7    0     0  1  1 88 10

 0  2    208 1685808 213056 3883244    0    0     4  2288 1480   209  0  0 68 32

 0  0    208 1685808 213060 3883240    0    0     4  2984 1515   173  0  0 76 24

 0  0    208 1685888 213068 3883232    0    0     0    24 1222   138  0  0 99  0

 0  0    208 1685952 213068 3883232    0    0     0     0 1079    90  0  0 100  0

 0  0    208 1686032 213068 3883232    0    0     0     0 1078    77  0  0 100  0

 0  0    208 1686032 213068 3883232    0    0     0   896 1077    58  0  0 99  1

-r 列表示运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu。

-us 列显示了用户方式下所花费CPU 时间的百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序。

-sy 列显示了内核进程所花费的cpu时间的百分比。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。

-wa 列显示了IO等待所占用的CPU时间的百分比。这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。

-swpd 切换到内存交换区的内存数量(k表示)。如果swpd的值不为0,或者比较大,比如超过了100m,只要si、so的值长期为0,系统性能还是正常

-bi 从块设备读入数据的总量(读磁盘)(每秒kb)。

-bo 块设备写入数据的总量(写磁盘)(每秒kb)

这里我们设置的bi+bo参考值为1000,如果超过1000,而且wa值较大应该考虑均衡磁盘负载         -in 每秒产生的中断次数                                                                 -cs  每秒产生的上下文切换次数这两个值越大,内核消耗cpu时间越大                         -id cpu处于空闲时间百分比

需要关注的:

-r 运行的进程比较多,系统繁忙
-bo 磁盘写的数据量大
-us 持续大于50,服务器高峰可以接受
-wa IO等待,持续大于30,说明IO等待严重
-id 持续小于50,服务器高峰可以接受

 

OK,现在来看实际的:(实际负载并不高,只是模拟一个解决问题的思路)

负载状况如下:

16:29:17 up 426 days,  2:00,  2 users,  load average: 3.91, 4.25, 3.34

一.先通过vmstat看看状态:

[root@MySQL01 ~]# vmstat 2 10

procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----

 r  b   swpd   free   buff  cache     si   so    bi    bo   in    cs us sy id wa

 0  0    208 1358752 209432 4158048    0    0     8    11    0     0  1  1 88 10

 0  1    208 1358432 209432 4158568    0    0    70     0 3071  1789  2  1 95  2

 0 13    208 1356256 209448 4159852    0    0   206  1326 8272  5011  6  3 74 17

 0  0    208 1352568 209504 4162136    0    0   202  2582 10151  5467  7  4 37 52

 0  0    208 1350904 209508 4163952    0    0   194     0 10420  6080  8  3 81  8

 0  2    208 1350520 209508 4163952    0    0    20  2666 3571   644  1  0 75 24

 1  0    208 1349944 209516 4164724    0    0    90  4704 4011  1008  3  2 73 23

 0  2    208 1349752 209524 4164976    0    0    84  1798 5209  2341  2  1 72 24

 0  0    208 1348920 209532 4166268    0    0    78  1148 4026  2031  2  2 75 22

 0  0    208 1348664 209532 4166528    0    0    50     0 4474  2269  2  1 95  2

从以上的解释看:

1.cpu没问题(r,us,us+sy,id)

2.内存没问题,swpd没变化,si、so的值长期为0

3.硬盘的写操作比较频繁,wa值也偏大

 

二:在通过iostat看观察磁盘状况

[root@MySQL01 ~]# iostat -x 1 5

Linux 2.6.9-55.ELsmp (MySQL01)  10/26/2010

avg-cpu:  %user   %nice    %sys %iowait   %idle

           1.34    0.00    0.82   10.03   87.82

Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util

cciss/c0d0   0.00 124.31  8.06 104.80   64.49   86.39    32.24    43.19     1.34     0.10    0.90   0.12   1.35

avg-cpu:  %user   %nice    %sys %iowait   %idle

           0.00    0.00    0.00   17.29   82.71

Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util

cciss/c0d0   0.00 490.00  0.00 208.00    0.00 12432.00     0.00  6216.00    59.77   646.27  384.62   3.25  67.70

avg-cpu:  %user   %nice    %sys %iowait   %idle

           0.00    0.00    0.25   48.88   50.87

Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util

cciss/c0d0   0.00   3.00  0.00 497.00    0.00   32.00     0.00    16.00     0.06   568.50 1112.20   2.01 100.10

avg-cpu:  %user   %nice    %sys %iowait   %idle

           0.00    0.00    0.00   44.00   56.00

Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util

cciss/c0d0   0.00  35.00  0.00 351.00    0.00 1232.00     0.00   616.00     3.51   179.49 2159.48   2.84  99.70

avg-cpu:  %user   %nice    %sys %iowait   %idle

           0.25    0.00    0.50   24.63   74.63

Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util

cciss/c0d0   0.00 284.00  0.00 546.00    0.00 6616.00     0.00  3308.00    12.12   113.78  200.10   1.83 100.10

rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s

wrqm/s: 每秒进行 merge 的写操作数目。即delta(wmerge)/s

r/s: 每秒完成的读 I/O 设备次数。即delta(rio)/s

w/s: 每秒完成的写 I/O 设备次数。即delta(wio)/s

rsec/s: 每秒读扇区数。即 delta(rsect)/s

wsec/s: 每秒写扇区数。即 delta(wsect)/s

rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)

wkB/s: 每秒写K字节数。是 wsect/s 的一半。(需要计算)

avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)

avgqu-sz: 平均I/O队列长度。即delta(aveq)/s/1000 (因为aveq的单位为毫秒)。

await: 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)

svctm: 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)

%util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)

 

如果 %util 接近100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘

可能存在瓶颈。

idle小于70% IO压力就较大了,一般读取速度有较多的wait.

从上面的参数解释看,

1.%util值偏大,有的还达到了100%

2.%idle值随大部分大于70%,但是也在边缘

 

 

三:用sar命令看看系统信息

[root@MySQL01 ~]# sar 1 10

Linux 2.6.9-55.ELsmp (MySQL01)  10/27/2010

 

10:38:37 AM       CPU     %user     %nice   %system   %iowait     %idle

10:38:38 AM       all      9.95      0.00      5.47     19.65     64.93

10:38:39 AM       all      0.00      0.00      0.00     75.00     25.00

10:38:40 AM       all      0.00      0.00      0.00     62.00     38.00

10:38:41 AM       all      7.27      0.00      4.01     14.54     74.19

10:38:42 AM       all      1.75      0.00      0.75      2.49     95.01

10:38:43 AM       all      1.50      0.00      1.00      2.24     95.26

10:38:44 AM       all      0.00      0.00      0.25     40.75     59.00

10:38:45 AM       all      0.00      0.00      0.25     24.75     75.00

10:38:46 AM       all      0.25      0.00      0.25     46.00     53.50

10:38:47 AM       all      0.00      0.00      0.25     24.94     74.81

明显看到还是iowait过高,导致cpu使用别偏大

四:用top命令看看谁最活跃:

[root@p_w_picpaths ~]# top -d 1

top - 16:33:36 up 426 days,  2:04,  2 users,  load average: 1.49, 2.72, 2.92

Tasks:  79 total,   1 running,  78 sleeping,   0 stopped,   0 zombie

Cpu(s):  2.2% us,  1.8% sy,  0.0% ni, 93.0% id,  3.0% wa,  0.0% hi,  0.0% si

Mem:   8309904k total,  6387968k used,  1921936k free,   286384k buffers

Swap:  2048248k total,      208k used,  2048040k free,  3555376k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                               

25912 squid     15   0 1991m 1.9g 1584 S   16 23.8   7404:15 squid                                                                 

    1 root      16   0  2612  548  468 S    0  0.0   0:01.51 init                                                                  

    2 root      RT   0     0    0    0 S    0  0.0   0:03.06 migration/0                                                           

    3 root      34  19     0    0    0 S    0  0.0   0:11.10 ksoftirqd/0  

 

从结果看:是squid对硬盘的读写太频繁导致,确实这台机器上跑了一台squid,压力也不小

至此,一个问题的分析就结束了,大概是个思路罢了

 

 

查看CPU使用率:

[root@test187 tmp]# mpstat -P ALL

Linux 2.6.9-42.ELsmp (test187)  05/17/2011

 

03:20:01 PM  CPU   %user   %nice %system %iowait    %irq   %soft   %idle    intr/s

03:20:01 PM  all    0.00    0.00    0.03    0.00    0.02    0.00   99.94   1021.12

03:20:01 PM    0    0.00    0.00    0.03    0.00    0.02    0.00   99.94    510.85

03:20:01 PM    1    0.00    0.00    0.03    0.00    0.01    0.00   99.98    510.27

[root@test187 tmp]# mpstat 2 5

Linux 2.6.9-42.ELsmp (test187)  05/17/2011

 

03:20:07 PM  CPU   %user   %nice %system %iowait    %irq   %soft   %idle    intr/s

03:20:09 PM  all    0.00    0.00    0.00    0.00    0.00    0.00  100.00   1025.76

03:20:11 PM  all    0.00    0.00    0.00    0.00    0.00    0.00  100.00   1021.11

03:20:13 PM  all    0.00    0.00    0.00    0.00    0.00    0.00  100.00   1025.25

03:20:15 PM  all    0.00    0.00    0.25    0.00    0.00    0.00   99.75   1029.95

03:20:17 PM  all    0.00    0.00    0.00    0.00    0.00    0.00  100.00   1032.99

Average:     all    0.00    0.00    0.05    0.00    0.00    0.00   99.95   1027.00