I/O能夠說是問題大戶,線上的問題常常都是它引發的,不少人殊不知道怎麼定位這種問題。今天簡單介紹一下,在此拋磚引玉。ios
此類問題咱們通常分三步定位:按系統級I/O、進程級I/O、業務級I/O定位便可,通常狀況下分析前面兩步就能夠知道大體問題所在。spa
經常使用選項code
-d 顯示設備(磁盤)使blog
I/O能夠說是問題大戶,線上的問題常常都是它引發的,不少人殊不知道怎麼定位這種問題。今天簡單介紹一下,在此拋磚引玉。
此類問題咱們通常分三步定位:按系統級I/O、進程級I/O、業務級I/O定位便可,通常狀況下分析前面兩步就能夠知道大體問題所在。
系統級I/O (使用iostat、vmstat命令)
經常使用選項
-d 顯示設備(磁盤)使用狀態 。
-x 顯示和I/O相關的擴展數據。
-k 使用k爲單位。
線上I/O問題排查思路
%util 表明磁盤繁忙程度,0%~100%之間。
argrq-sz 提交給驅動層的IO請求大小,用於度量隨機程度。
svctm 單次IO請求耗時,尋道+旋轉延遲時間,通常不超過8ms。
vmstat命令能夠查看系統緯度的CPU負載,顯示以下:
us:表示用戶進程消耗的CPU時間百分比。
sy:內核模式消耗的CPU時間百分比。
wa:IO等待消耗的CPU時間百分比。
進程級I/O (使用iotop、strace)
經常使用選項
-d SEC:間隔SEC秒顯示一次。
-p PID:監控的進程pid。
iotop
線上I/O問題排查思路
用狀態 。進程
-x 顯示和I/O相關的擴展數據。io
-k 使用k爲單位。class
%util 表明磁盤繁忙程度,0%~100%之間。監控
argrq-sz 提交給驅動層的IO請求大小,用於度量隨機程度。擴展
svctm 單次IO請求耗時,尋道+旋轉延遲時間,通常不超過8ms。請求
vmstat命令能夠查看系統緯度的CPU負載,顯示以下:
us:表示用戶進程消耗的CPU時間百分比。
sy:內核模式消耗的CPU時間百分比。
wa:IO等待消耗的CPU時間百分比。
經常使用選項
-d SEC:間隔SEC秒顯示一次。
-p PID:監控的進程pid。
iotop