top命令显示iowait (wa)非常高时怎么排查
当 top 命令显示 iowait (wa) 非常高时,表示系统正在等待 I/O 操作完成。要确定是磁盘 I/O 还是网络 I/O 导致的等待,可以使用以下工具和方法进行进一步排查。
1. 使用 iostat 检查磁盘 I/O
iostat 是一个专门用于监控磁盘 I/O 的工具,可以显示磁盘的读写速度和等待时间。
安装 iostat(如果未安装):
sudo apt-get install sysstat # Ubuntu/Debian
sudo yum install sysstat # CentOS/RHEL
使用 iostat 查看磁盘 I/O:
iostat -x 1
-x:显示扩展统计信息。1:每秒刷新一次。
关键指标:
%util:磁盘利用率。如果接近 100%,表示磁盘 I/O 是瓶颈。await:平均 I/O 等待时间(毫秒)。如果较高,表示磁盘响应慢。r/s和w/s:每秒的读写操作数。
如果 %util 和 await 较高,说明磁盘 I/O 是导致 iowait 高的原因。
2. 使用 iotop 检查磁盘 I/O
iotop 是一个实时监控磁盘 I/O 的工具,可以显示每个进程的磁盘读写情况。
安装 iotop(如果未安装):
sudo apt-get install iotop # Ubuntu/Debian
sudo yum install iotop # CentOS/RHEL
使用 iotop:
sudo iotop
- 查看哪些进程正在大量读写磁盘。
- 如果某些进程的磁盘读写量(
DISK READ和DISK WRITE)非常高,说明它们可能是导致磁盘 I/O 瓶颈的原因。
3. 使用 nload 或 iftop 检查网络 I/O
如果怀疑网络 I/O 是导致 iowait 高的原因,可以使用以下工具检查网络流量。
安装 nload:
sudo apt-get install nload # Ubuntu/Debian
sudo yum install nload # CentOS/RHEL
使用 nload:
nload
- 查看实时网络流量(输入和输出)。
- 如果网络流量非常高,说明网络 I/O 可能是瓶颈。
安装 iftop:
sudo apt-get install iftop # Ubuntu/Debian
sudo yum install iftop # CentOS/RHEL
使用 iftop:
sudo iftop
- 查看每个网络连接的实时流量。
- 如果某些连接占用了大量带宽,说明网络 I/O 可能是瓶颈。
4. 使用 dstat 综合检查
dstat 是一个多功能工具,可以同时监控 CPU、磁盘、网络等资源。
安装 dstat:
sudo apt-get install dstat # Ubuntu/Debian
sudo yum install dstat # CentOS/RHEL
使用 dstat:
dstat
- 查看 CPU、磁盘、网络等资源的实时使用情况。
- 如果磁盘或网络的使用率非常高,说明它们可能是导致
iowait高的原因。
5. 总结排查步骤
- 使用
iostat或iotop:检查磁盘 I/O 是否过高。 - 使用
nload或iftop:检查网络 I/O 是否过高。 - 使用
dstat:综合检查系统资源使用情况。
通过以上工具,可以快速确定是磁盘 I/O 还是网络 I/O 导致的 iowait 高,并进一步定位具体原因。
