1. 程式人生 > 其它 >Linux 檢視磁碟IO並找出佔用IO讀寫很高的程序

Linux 檢視磁碟IO並找出佔用IO讀寫很高的程序

線上一臺伺服器告警,磁碟利用率 disk.util > 90,並持續告警。

登入該伺服器後通過 iostat -x 1 10 查看了相關磁碟使用資訊。相關截圖如下:

# 如果沒有 iostat 命令,那麼使用 yum install sysstat 進行安裝
# iostat -x 1 10

由上圖可知,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

通過這個命令可以看見比較詳細資訊,如:程序號,磁碟讀取量,磁碟寫入量,IO百分比,涉及到的命令是什麼「兩個都是 grep 命令造成的IO讀取量大」。

通過 pidstat 命令

# 命令的含義:展示I/O統計,每秒更新一次
# pidstat -d 1

 可見其中 grep 命令佔用了大量的讀IO,之後可根據 PID 檢視相關程序資訊。