来!递进下你和iostat的塑料友谊!

       iostat 熟吗?熟又不熟,塑料假闺蜜描述再合适不过。

       熟---体现在使用频率相当高,不熟---很多人都只知其一--util高低代表io的压力大小,但却不知其二,三,四。。。。

        为什么要了解二,三,四等,因为一只是表现,二,三,四等才是因。

        其实网上有太多iostat介绍的文章,篇复一篇,但是正因为多,所以猜更多的人除了uitl指标之外的其他指标都不熟,因为没看到有什么收益,结果就是util简直是iostat代言人。

       下面就结合一个mysql实际案例来助其他指标坐上c位:

        案例背景:1 两台主机,业务指标形态完全相同,表记录数量不分伯仲,但同一个时间分析                                 binlog写入相同表,相同记录数量,一个io util 将近90% ,一个io只有28%左右;

                           2 机型相同,且磁盘都是ssd盘,文件系统也一致,但厂家不同。

                           3  主机侧检查没有raid充放电之类导致io写磁盘等性能降低,也无其他方面故障。

         所以从分析下iostat的各个指标来下手,当时对比看到如下:

   

对应各指标如下:

指标序号

指标意义io高负载异常机器
具体值
io正常机器具体值分析备注
① Device:对应的设备名称/sda
/nvme0n1
/sda
/nvme0n1
io负载高的为nvme0n1,
都是db的数据盘
可结合df -h具体定位是那快盘io高,再根据盘承载的数据,粗略判断是什么数据导致的,比如该案例
 sda对应日志表盘,
nvme0n1 对应数据盘,
发现是nvme0n1 util高,所以是写数据导致的。
② rrqm/s:每秒对该设备的读请求被合并次数0.000.00都无合并(文件系统会对读取同块(block)的请求进行合并,当
系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge)
③ wrqm/s: 每秒对该设备的写请求被合并次数0.000.00都无合并
④ r/s: 每秒读取的扇区数;51.0070.00高负载:低负载约 1:1
⑤ w/s: 每秒写入的扇区数。767.002030.00高负载:低负载约 1:3sector(扇区)是硬件读写的最小操作单元,例如如果一个sector是512字节,fidsk -l 查看两天机器扇区都为512Byte 相同个大小
⑥ rMB/s: 每秒读数据量(MB为单位)0.800.94高负载:低负载约 1:1
⑦ wMB/s: 每秒写数据量(MB为单位)9.7414.59高负载:低负载约 1:1.5
⑧ avgrq-sz:平均每次IO操作的数据量(扇区数为单位)26.3915.14高负载:低负载约 1.8:1
⑨ avgqu-sz: 平均等待处理的IO请求队列长度,
毫无疑问,队列长度越短越好
0.910.30高负载:低负载约 3:1
⑩ await: 平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)每一个IO请求的处理的平均时间(单位是微秒毫秒)。1.110.14高负载:低负载约 10:1这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题
r_await:每个读操作的平均耗时0.630.31高负载:低负载约 2:1
w_await:  每个写操作的平均耗时1.140.14高负载:低负载约8:1
svctm: 平均每次IO请求的处理时间1.080.14高负载:低负载约 10:1
%util: 一秒中有百分之多少的时间用于 I/O 操作88.2028.90高负载:低负载约 3:1在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)
结合⑧ 、⑪和⑫ :虽然高负载的每次io操作的扇区是低负载的1.8倍,但是其消耗的时间却是(0.63+1.08/0.31+0.14)约等于3.7,所以io的繁忙指标util 88:20:28.90约等于3.1,由于这是单次统计,和3.7有点偏差,其实大数据多次统计下基本是比较吻合的,所以高负载的机器io读取速度能力较差,

 所以最后结论是:两个机器品牌不同,导致高负载机器尽管每次io读取扇区多,但是耗费时间却长,从而导致util就会一直工作,表现出来就是util 很高,所以最后换了一个和低负载同品牌的机器,io恢复。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值