根据磁盘IO告警,找到占用磁盘IO (util)读写很高的进程。
背景-线上告警
线上一台服务器告警,磁盘利用率 disk.util > 90,并持续告警。
登录该服务器后通过 iostat -x 1 10 查看了相关磁盘使用信息。相关截图如下:
1 | # 如果没有 iostat 命令,那么使用 yum install sysstat 进行安装 |
由上图可知,vdb磁盘的 %util【IO】几乎都在100%,原因是频繁的读取数据造成的。
其他字段说明
1 | Device:设备名称 |
找到 IO 占用高的进程
通过 iotop 命令
如果没有该命令,请通过 yum install iotop 进行安装。
1 | # iotop -oP |
通过这个命令可以看见比较详细信息,如:进程号,磁盘读取量,磁盘写入量,IO百分比,涉及到的命令是什么「两个都是 grep 命令造成的IO读取量大」。
通过 pidstat 命令
1 | # 命令的含义:展示I/O统计,每秒更新一次 |
可见其中 grep 命令占用了大量的读IO,之后可根据 PID 查看相关进程信息。
说明:本图与上图的PID不同,原因是上图涉及的进程执行完了,本图是之后执行产生的进程【都执行的同一个脚本】。