前段时间,在实际生产环境中遇到了这样的问题:每天定时5点钟进行mysql的数据备份,Zabbix会触发自带的报警I/O isoverload,所以想总结一下,关于遇到了磁盘I/O读写过高的情况分析。
1.开始判定具体时间
关于sar命令可以查看具体的使用方法:
传送门:http://blog.csdn.net/zhoutimo/article/details/52021960
进入sar命令默认存储的历史记录路径/var/log/sa/
使用sar查看昨天的关于磁盘发生的异常
sar -d -f sa26
输出发现5点钟左右I/O读写开始变大
2.判定具体进程影响了I/O读写
要使用block_dump工具,如果使用block_dump那么需要关闭syslog,否则klog会打印很多日志到messages中,这样更加让系统不堪重负。
①service syslog stop
②打开block dump:
echo 1 > /proc/sys/vm/block_dump
③统计方法:
[root@f161 mm]# dmesg | egrep "READ|WRITE|dirtied" | egrep -o '([a-zA-Z]*)' | sort | uniq -c | sort -rn | head
2002 on
1986 block
1962 WRITE
1936 xvdb
1759 mysqld
182 kjournald
27 xvdd
24 READ
21 xvdc
18 xvda
根据实际情况确认具体是哪个进程影响了I/O读写
④不要忘记在抓完之后关掉block_dump和启动syslog:
echo 0 > /proc/sys/vm/block_dump
service syslog start