环境
1. DB: Server version: 5.7.18-log MySQL Community Server (GPL)
2. OS: CentOS release 6.6 (Final)
问题描述
- 问题要害
1. 不定时的磁盘util 100%
2. 每次持续时间就几秒钟
问题分析
- 第一反应
1. 看到这个问题,我的第一反应就是去看看mysql slow query
2. 结果通过omega系统里面的智能slow query系统得到的答案是:无明显slow
问题到这,基本上根据经验已经无法快速得到答案,然后继续思考
- 看各项监控
1. cpu 正常,历史曲线一致
2. load 正常, 历史曲线一致
3. InnoDB 核心监控正常,历史曲线一致
4. 网络正常,历史曲线一致
看下来都很正常,唯独磁盘io不正常
- 既然是io压力,那么很自然的查看iostat和iotop
1. iostat
经过一段时间的iostat(因为要问题复现必须要等待,因为通过监控得到,问题时间不规律)发现,磁盘io 100%
的时候,基本上wio=2000,wMB/s 800M左右
2. iotop
经过一段时间的观察,唯独了一个系统进程[flush-8:16] io占用特别高
到这里,是不是就基本锁定问题了呢?
去查了下,[flush-8:16] 就是OS内核再刷新数据
到这一步,基本上快接近真相了,但是剧情并没有按照想象的发展,那么问题来了,这个刷新是谁导致的呢?最后的凶手又是谁呢?
- 回