前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >磁盘IO问题纪录

磁盘IO问题纪录

作者头像
dogfei
发布2020-07-31 13:56:13
2K0
发布2020-07-31 13:56:13
举报
文章被收录于专栏:devops探索devops探索

背景

随着公司站点的发展,用户和访问量日益增加,经常会出现数据库主从出现延迟的情况,例如,用户在点击充值页进行充值时,经常会出现充值不到账的情况,针对这个问题,对数据库进行排查,发现,磁盘IO极不稳定,iowait也很高,%util一直在90左右,这说明产生的I/O请求很多,IO已经满负荷,磁盘IO存在瓶颈。所以需要加一块SSD盘,来提高IO处理速度。

磁盘IO情况检测

可以结合vmstatiostat来判断IO和cpu的一些情况,例如:

代码语言:javascript
复制
vmstat 1 100
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 3  0      0 144716 133152 3805212    0    0   485  1565    2    2  3  1 90  6  0
 1  0      0 140188 133152 3808372    0    0 59940   744 2252 1537 42  2 36 20  0
 1  0      0 146236 133152 3803568    0    0 37632  7384 2434 1969 45  2 39 14  0
 1  1      0 120212 133152 3830100    0    0 26656   304 1469 1144 18  1 35 46  0
 1  0      0 143180 133156 3804948    0    0 48004   804 2292 1577 43  2 41 14  0
 0  1      0 158224 133156 3791228    0    0 28796  7988 2514 2212 45  2 37 17  0

r 表示运行队列,即多少个进程分配到了CPU,如果超过CPU核数,就会出现CPU瓶颈了

b 表示阻塞的进程

si 每秒从磁盘读入虚拟内存的大小,大于0,表示物理内存不够用或者内存泄漏

so 表示从磁盘每秒写入虚拟内存的大小,大于0,同上

bi 表示系统上所有的磁盘和其他块设备上每秒读入的总量

bo 表示所有磁盘上每秒写入的总量

in 每秒CPU中断的次数,包括时间中断

us 表示用户进程消耗的CPU时间百分比,us值越高,说明用户进程消耗CPU时间越多,如果长期大于50%,则需要考虑优化程序或者算法

sy 表示系统内核进程消耗的CPU时间百分比,一般来说us+sy应该小于80%,如果大于80%,说明可能存在CPU瓶颈

id 表示CPU处在空间状态的时间百分比

wa 表示IO等待所占用的CPU时间百分比,wa值越高,说明I/O等待越严重,根据经验wa的参考值为20%,如果超过20%,说明I/O等待严重,引起I/O等待的原因可能是磁盘大量随机读写造成的

综上,我们在判断IO问题的时候,参考bibowa便可以判断IO的情况。

再来看下iostat的使用:

代码语言:javascript
复制
iostat -x -k 1 100
Linux 3.10.0-693.2.2.el7.x86_64 (xs_88_55)      05/08/2018      _x86_64_        (2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           3.07    0.00    0.92    5.72    0.00   90.30

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
vda               0.01    83.24    7.92  199.19   954.62  3104.95    39.20     0.53    2.57   31.62    1.42   0.62  12.84
vdb               0.00     0.07    0.05    0.13    12.04    11.01   256.26     0.01   49.74   19.07   60.37   1.13   0.02

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.01    0.00    0.51    2.53    0.00   95.96

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
vda               0.00     4.00   30.00    2.00   124.00    24.00     9.25     0.03    0.78    0.77    1.00   0.09   0.30
vdb               0.00    83.00    8.00  119.00    68.00   828.00    14.11     0.07    0.53    0.62    0.52   0.53   6.70

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.00    0.00    0.50    2.49    0.00   96.02

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
vda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
vdb               0.00    61.00   14.00   88.00   152.00   632.00    15.37     0.05    0.46    0.50    0.45   0.46   4.70

%user:应用程序使用CPU的时间占比

%system:内核程序使用CPU的时间占比。

%iowait:CPU花费了多少时间去等待磁盘IO

%util: 表示磁盘忙碌情况,一般该值超过80%表示该磁盘可能处于繁忙状态

综上,在看IO时,关注iowaitutil来判断IO情况。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-03-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 磁盘IO情况检测
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档