磁盘 I/O 高导致操作 Linux 卡顿

By | 2022年8月17日

最近 SSH 登录客户的 CentOS7 敲命令卡顿,连按 tab 补全键都卡,服务器和内存配置都很高因此排除是它们引起的。

执行 top 命令发现 CPU wa 值很高,如下图,说明CPU资源在等待I/O,由此判断是因为I/O原因导致了操作卡顿:

再用 iotop 命令,可以查看是哪个进程占用了I/O:

上图可以看到 microk8s 进程 IO利用率达到了 100%。去跟客户确认后,说给我们分配的是网络硬盘,读写速度不快!

CentOS7 默认是没有安装 iotop 命令的,可以使用 yum -y install iotop 命令安装。另外网上也有人用 ps 命令来排查的:

# ps命令能打印出内存,cpu的情况但没办法打印出硬盘I/O的情况。虽然ps没办法打印出I/O的情况,
# 但可以显示出进程是否在等待I/O。等待I/O的进程通常处于uninterruptible、sleep或D状态,
# 通过这些信息可以大致查找出处在wait状态的进程。
for x in `seq 1 10`;do ps -eo state,pid,cmd|grep "^D";echo "---";sleep 5;done

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注