(一)简述
每天都收到磁盘iowait告警信息,尤其是日志服务器在进行大量的读写操作过程中,从而造成系统处于崩溃边缘,为查找磁盘iowait由于什么原因造成的以及后续的系统的优化点。CentOS有许多查找问题的工具,也有高级的。
I/O Wait 就是一个需要使用高级的工具来debug的问题,当然也有许多基本工具的高级用法。I/O wait的问题难以定位的原因 是因为我们有很多工具可以告诉你说I/O 受限了,但是并没有告诉你具体是哪些进程们引起的。
具体的思路如下:top 。查看由cpu一行浪费在iowait上的cpu百分比 =>iostat -x 2 5 查看某块磁盘正在被写入 => iotop 查找最高的磁盘I/O对应的进程 => lsof -p pid 查看通过一个进程打开所有文件或打开一个文件的所有进程。
(二)具体步骤如下:
(1)通过top命令来确认是否是I/O导致系统缓慢。
[root@iZ23iod5vslZ ~]# top
top - 15:38:32 up 40 days, 5:59, 3 users, load average: 0.00, 0.01, 0.05
Tasks: 128 total, 1 running, 127 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.4 us, 0.2 sy, 0.0 ni, 99.2 id, 98 wa, 0.0 hi, 0.0 si, 0.1 st
KiB Mem: 32520424 total, 31492136 used, 1028288 free, 412772 buffers
KiB Swap: 0 total, 0 used, 0 free. 25902892 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
18988 root 20 0 11.647g 3.611g 7896 S 2.7 11.6 507:57.30 java
28 root 20 0 0 0 0 S 0.3 0.0 6:43.31 rcuos/3
1 root 20 0 49556 3412 1912 S 0.0 0.0 0:14.60 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:48.28 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:00.83 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/0
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/1
11 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/2
12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/3
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/4
14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/5
15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/6
16 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/7