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