注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

牧笔临风

己有能,勿自私!

 
 
 

日志

 
 
 
 

【转载】主机IO错误或超时失败案例分享  

2014-12-09 10:51:59|  分类: linux服务篇 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
  • 客户描述:
     感到业务运行速度缓慢。

  • 工程师描述

  • 登录主机,查看IO情况,执行iostat -x -d 30,查看磁盘的读写状态数据await(平均等待时间)和util(利用率),一般观察时间为30S。

   主机IO错误或超时失败案例分享 - zhuzhu - 五事九思 (大连Linux主机维护)

  • 分析解决:
        确认sddg硬盘在统计数据中出现await在一段时间明显大于其他硬盘且util值为100% 。可以看出该盘性能明显低于其他盘,该硬盘为慢盘。
        直接更换该硬盘。测试后问题解决
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    好了由上面我们引入了iostat这个工具当然还有它的兄弟mpstat就像我们常用的数据收集工具sar一样,mpstat和iostat也是由sysstat这个软件包提供。


    iostat:生成三种类型的报告中,CPU使用率报告,设备利用率报告和网络文件系统(NFS)的报告。

    mpstat:生成处理器相关的统计数据。你可以配置LANG=C 使它提供24小时制的显示。


iostat简单介绍iostat会显示从系统开机到当前执行时刻的统计信息。

1.不加任何选项执行iostat

[root@rhel6 ~]# iostat

blob.png
以上输出中,除最上面指示系统内核版本、主机名和日期的一行外,另有两部分:

avg-cpu: 总体cpu使用情况统计信息,对于多核cpu,这里为所有cpu的平均值

Device: 各磁盘设备的IO统计信息

对于cpu统计信息一行,我们主要看iowait的值,它指示cpu用于等待io请求完成的时间。

Device中各列含义如下:

Device: 以sdX形式显示的设备名称

tps: 每秒进程下发的IO读、写请求数量

Blk_read/s: 每秒读block数量(一般一个block为512bytes)

Blk_wrtn/s: 每秒写block数量

Blk_read: 取样时间间隔内读block总数量

Blk_wrtn: 取样时间间隔内写block总数量

我们可以使用-c选项单独显示avg-cpu部分的结果,使用-d选项单独显示Device部分的信息。


2.iostat默认是用block为单位显示,我们可以用megabytes为单位显示读写信息(-m)

[root@rhel6 ~]# iostat -d -m

blob.png

3.更详细的io统计信息(-x选项)为显示更详细的io设备统计信息,我们可以使用-x选项,在分析io瓶颈时,一般都会开启-x选项:

[root@rhel6 ~]# iostat -x   -m

 Linux 2.6.32-220.el6.x86_64 (rhel6) 11/06/2014 _x86_64_ (4 CPU) 

avg-cpu:     %user       %nice     %system     %iowait     %steal     %idle 

                      0.12     0.00         0.11         0.29        0.00           99.47

Device: rrqm/s       wrqm/s     r/s         w/s     rMB/s     wMB/s     avgrq-sz avgqu-sz     await     svctm %uti

sda     11.83             27.48     4.25        0.48     0.06      0.11         75.03          0.11         22.84      2.08     0.98

sdb     0.04             1.77        0.09        0.53      0.01      0.01            49.33         0.01         12.69     7.45     0.46

以上各列的含义如下:

rrqm/s: 每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并

wrqm/s: 每秒对该设备的写请求被合并次数r/s: 每秒完成的读次数

w/s: 每秒完成的写次数rMB/s: 每秒读数据量(MB为单位)

wMB/s: 每秒写数据量(MB为单位)avgrq-sz:平均每次IO操作的数据量(扇区数为单位)

avgqu-sz: 平均等待处理的IO请求队列长度

await: 平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)

svctm: 平均每次IO请求的处理时间(毫秒为单位)

%util: 采用周期内用于IO请求利用率,但这个利用率到100%时为饱和


对于以上示例输出,我们可以获取到以下信息:比如sda磁盘

  1. 每秒向磁盘上写0.48左右数据(wMB/s值)

  2. 每秒平均有5次IO操作(r/s+w/s),其中以读操作为主体

  3. 平均每次IO请求等待处理的时间为22.84毫秒,处理耗时为2.08毫秒

  4. 等待处理的IO请求队列中,平均有0.11个请求驻留

 

以上各值之间也存在联系,我们可以由一些值计算出其他数值,例如:

util = (r/s+w/s) * (svctm/1000)

对于上面的例子有:util = (4.25+0.48)*(2.08/1000) =0.0098384  ==》%0.98


mpstat简单介绍  比如我们想列出CPU0的统计信息


[root@rhel6 ~]# mpstat -P 0 
Linux 2.6.32-220.el6.x86_64 (rhel6) 11/06/14 _x86_64_ (4 CPU)

20:44:38 CPU        %usr       %nice        %sys     %iowait        %irq     %soft     %steal     %guest %idle

20:44:38 0             0.21     0.00            0.07        0.23            0.00     0.01        0.00         0.00     99.48

  评论这张
 
阅读(137)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017