io异常消耗定位进程

iostat 工具定位到磁盘

#iostat -d 3 -k -x -t 30

07/14/2020 03:42:55 PM

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

scd0 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

通过iostat命令确认 io异常发生在

哪个磁盘、

哪个时间点、

磁盘的iops以及数据吞吐量

 

iotop 工具定位到进程

#iotop -b -o -d 3 -t -qqq -n 30
15:44:59 254 be/3 root 0.00 B/s 10.61 K/s 0.00 % 0.11 % [jbd2/vda1-8]
15:44:59 2337 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.01 % [kworker/0:0]

通过iotop 命令检查问提发生
哪个时间点、
哪个pid号和进程参数、
进程产生的磁盘消耗吞吐量、
占用百分比

 

排查过程:

1、top 命令检查iowait 情况,已经是否有进程消耗cpu过高,找到pid号
2、通过iostat -d -x 1检查是否磁盘io使用率高引起的。util%
3、通过pidstat -d 1 查到io写入高的进程,以及对应的pid号
4、通过strace -f -T -tt -p pid 通过strace 跟踪pid对应的进程 和子进程 的消耗时间和跟踪时间
5、lsof -p 子进程号 找到系统调用(pid)的操作对象
6、如果通过ps 命令找不到子进程号,可以通过pstree -p|grep 子进程名 查找。

posted @ 2020-10-11 16:16  乌鸦yy  阅读(280)  评论(0编辑  收藏  举报