Linux 查看磁盘IO并找出占用IO读写很高的进程

摘要:
后台-在线报警行上的一个服务器报警,磁盘利用率util>90,并继续报警。登录到服务器后,您可以通过iostat-x110查看相关的磁盘使用情况信息。相关的屏幕截图如下:1#如果没有iostat命令,请使用yu_installsysstat安装2#iostat-x110。从上图中,我们可以看到vdb磁盘的%util[IO]几乎是100%,因为频繁读取数据。其他字段描述设备:设备名称t
背景-线上告警

线上一台服务器告警,磁盘利用率 disk.util > 90,并持续告警。

登录该服务器后通过 iostat -x 1 10 查看了相关磁盘使用信息。相关截图如下:

1 # 如果没有 iostat 命令,那么使用 yum install sysstat 进行安装
2 # iostat -x 1 10

Linux 查看磁盘IO并找出占用IO读写很高的进程第1张

由上图可知,vdb磁盘的 %util【IO】几乎都在100%,原因是频繁的读取数据造成的。

其他字段说明

Device:设备名称
tps:每秒的IO读、写请求数量,多个逻辑请求可以组合成对设备的单个I/O请求。
Blk_read/s (kB_read/s, MB_read/s):从设备读取的数据量,以每秒若干块(千字节、兆字节)表示。块相当于扇区,因此块大小为512字节。
Blk_wrtn/s (kB_wrtn/s, MB_wrtn/s):写入设备的数据量,以每秒若干块(千字节、兆字节)表示。块相当于扇区,因此块大小为512字节。
Blk_read (kB_read, MB_read):读取块的总数(千字节、兆字节)。
Blk_wrtn (kB_wrtn, MB_wrtn):写入块的总数(千字节,兆字节)。

rrqm/s:每秒合并到设备的读请求数。即delta(rmerge)/s
wrqm/s:每秒合并到设备的写入请求数。即delta(wmerge)/s
r/s:每秒完成的读I/O设备次数。即delta(rio)/s
w/s:每秒完成的写I/0设备次数。即delta(wio)/s
rsec/s (rkB/s, rMB/s):每秒读取设备的扇区数(千字节、兆字节)。每扇区大小为512字节
wsec/s (wkB/s, wMB/s):每秒写入设备的扇区数(千字节、兆字节)。每扇区大小为512字节

avgrq-sz:平均每次设备I/O操作的数据量(扇区为单位)。即delta(rsec+wsec)/delta(rio+wio)
avgqu-sz:平均每次发送给设备的I/O队列长度。
await:平均每次IO请求等待时间。(包括等待队列时间和处理时间,毫秒为单位)
r_await:平均每次IO读请求等待时间。(包括等待队列时间和处理时间,毫秒为单位)
w_await:平均每次IO写请求等待时间。(包括等待队列时间和处理时间,毫秒为单位)
svctm:平均每次设备I/O操作的处理时间(毫秒)。警告!不要再相信这个字段值,这个字段将在将来的sysstat版本中删除。
%util:一秒中有百分之多少的时间用于I/O操作,或者说一秒中有多少时间I/O队列是非空的。当该值接近100%时,设备饱和发生。

找到 IO 占用高的进程

通过 iotop 命令

如果没有该命令,请通过 yum install iotop 进行安装。

# iotop -oP

Linux 查看磁盘IO并找出占用IO读写很高的进程第2张

通过这个命令可以看见比较详细信息,如:进程号,磁盘读取量,磁盘写入量,IO百分比,涉及到的命令是什么「两个都是 grep 命令造成的IO读取量大」。

通过 pidstat 命令

1 # 命令的含义:展示I/O统计,每秒更新一次
2 # pidstat -d 1

Linux 查看磁盘IO并找出占用IO读写很高的进程第3张

可见其中 grep 命令占用了大量的读IO,之后可根据 PID 查看相关进程信息。

说明:本图与上图的PID不同,原因是上图涉及的进程执行完了,本图是之后执行产生的进程【都执行的同一个脚本】。

免责声明:文章转载自《Linux 查看磁盘IO并找出占用IO读写很高的进程》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ActiveMQ消息的消费原理Centos7搭建Confluence破解版下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

buildroot 制作Linux文件系统初级使用教程

buildroot 下载地址:https://buildroot.org/download.html 放在Linux文件下解压出来。 使用make menuconfig 进行配置相关的东西。 在使用这条命令之前,首先要安装相关的东西。 运行如下命令进行安装相关的库文件,我的是在Ubuntu14.04的环境下进行的。 sudo apt-get install...

Linux内核时间管理(二)——jiffies与jiffies_64释疑

    Linux内核中定义了jiffies变量来记录从系统启动到当前时刻系统时钟所产生的tick数。jiffies变量是一个无符号整型数值,即unsigned long类型。它的声明如下(在 include/linux/jiffies.h 中): extern u64 __jiffy_data jiffies_64;     由此可见,jiffies变量...

Linux 配置gitee

安装好git后, 如何配置连接至gitee ?首先, 需要在官网注册一个gitee账号, 然后进行以下配置步骤: 1. 设置账号 $ git config --global user.name "your name" 2. 设置邮箱 $ git config --global user.email "your email" 3. 生成密钥 $ ssh-...

Linux下实现免密码登录(超详细)

1.Linux下生成密钥   ssh-keygen的命令手册,通过”man ssh-keygen“命令:   通过命令”ssh-keygen -t rsa“   生成之后会在用户的根目录生成一个 “.ssh”的文件夹   进入“.ssh”会生成以下几个文件   authorized_keys:存放远程免密登录的公钥,主要通过这个文件记录多台机器的...

Linux中编译C文件

C/C++程序编译的过程 预处理,展开头文件,宏定义,条件编译处理等。通过gcc -E source.c -o source.i或者cpp source.c生成。 编译。这里是一个狭义的编译意义,指的是将预处理后的文件翻译成汇编代码的过程。通过gcc -S source.i生成。默认生成source.s文件。 汇编。汇编即将上一步生成的汇编代码翻译成对应的...

如何在Linux Mint Cinnamon中安装MATE桌面

如何在Linux Mint Cinnamon中安装MATE桌面 Linux Mint有两个版本,Cinnamon版本更漂亮,消耗资源也高,Mate版本资源需求较低,如果你安装了Cinnamon版本,想切换到mate版本又不想重装系统的话,来看看这篇经验吧。 打开菜单——》系统管理——》软件管理器 在搜索框中输入 mint-meta-mate,出现如图所示搜...