高IO等待问题的第一个征兆通常是系统平均负载。负载均衡的计算都是基于CPU利用率的,即使用或等待CPU的进程数目,当然,在Linux平台上,进程几乎都处于不可中断的睡眠状态。负载均衡的基线可以解释为,在一个CPU核的机器上上,该CPU得到充分利用。因此,对于4核机器中,如果系统平均复杂为4,表示该机器有足够的资源来处理它需要做的工作,当然只是勉强。在相同的4核系统,如果平均复杂是8,那么以为这将意味着服务器系统需要8个core才能处理所要做的工作,但现在只有4个核,所以已经超载。
如果系统显示平均负载较高,但是CPU的系统(system)和用户(user)利用率较低,那么就需要观察IO等待(即IOwait)。在linuc系统上,IOwait对系统负载有较大的影响,主要因为一个或多个核都可能被磁盘IO或网络
发现进程在等待IO完成是一回事,验证高IOwait的原因是另一回事。使用iostat–x1能够显示正在使用的物理存储设备的IO情况:
[username@server~]$iostat-x1
Device:rrqm/swrqm/sr/sw/srsec/swsec/savgrq-szavgqu-szawaitsvctm%util
cciss/c0d00.085.941.282.7517.3469.5221.600.1126.824.121.66
cciss/c0d0p10.000.000.000.000.000.005.300.008.765.980.00
cciss/c0d0p20.000.000.000.000.000.0058.450.007.793.210.00
cciss/c0d0p30.085.941.282.7517.3469.5221.600.1126.824.121.66
由上可知,很明显,设备/dev/cciss/c0d0p3的等待时间很长。然而,我们并没有挂载找个设备,实际上,它是个LVM设备。如果您使用的是LVM作为存储,那么,您应该发现iostat应该有那么一点混乱。LVM使用devicemapper子系统将文件系统映射到物理设备,因此,iostat可能显示多个设备,比如/dev/dm-0和/dev/dm-1。而df–h的输出却不会显示devicemapper路径,而是打印了LVM路径。最简单的方法是在iostat参数中添加选项-N。
[username@server~]$iostat-xN1
Device:rrqm/swrqm/sr/sw/srsec/swsec/savgrq-szavgqu-szawaitsvctm%util
vg1-root0.000.000.093.010.8524.088.050.0824.691.790.55
vg1-home0.000.000.051.460.9711.698.360.0319.893.760.57
vg1-opt0.000.000.031.560.4612.488.120.0529.893.530.56
vg1-tmp0.000.000.000.060.000.458.000.0024.854.900.03
vg1-usr0.000.000.631.415.8511.288.380.0732.483.110.63
vg1-var0.000.000.551.199.219.5410.740.0424.104.240.74
vg1-swaplv0.000.000.000.000.000.008.000.003.981.880.00
为简便起见,裁剪上面iostat命令的输出信息。列出的每个文件系统所显示出的IO等待都是不可接受的,观察第十栏标有await的数据。相比而言,文件系统/usr的await时间要高一些。我们先来分析一下这个文件系统,使用命令fuser-vm/opt查看哪些进程在访问这个文件系统,进程列表如下。
root@server:/root>fuser-vm/opt
USERPIDACCESSCOMMAND
/opt:db2fenc11067....mdb2fmp
db2fenc11071....mdb2fmp
db2fenc12560....mdb2fmp
db2fenc15221....mdb2fmp
当前服务器上有112个DB2进程正在访问/opt文件系统,为简便起见,列出四项。看来已经找到导致问题的原因,在服务器上,数据库配置为可使用速度更快的SAN访问,操作系统可以使用的是本地磁盘。可以打电话问问DBA(数据库管理员)怎么做才能这样配置。
最后一个组要的注意的是LVM和devicemapper。Iostat–xN命令的输出显示的是逻辑卷名,但它是可以通过命令ls–lrt/dev/mapper查到映射关系表。输出信息的第六列中的dm-是与iostat中的设备名相对应的。
有时候,在操作系统或应用层是没有什么可以做的,除了选择速度更快的磁盘,并没有其他的选择。幸运的是,快速磁盘访问,如SAN或SSD的价格正在逐步下降。