系统io wait高排查top -sc # 安全模式、显示进程主要判断指标:%us 过高,则可以在对应服务的线程ID查看具体详情,是否存在死循环,或者长时间的阻塞调用。%sy 过高,则先使用 strace 定位具体的系统调用,再定位是哪里的应用代码导致的。%si 过高,则可能是网络问题导致软中断频率飙高。%wa 过高,则是频繁读写磁盘导致的,可以通过 iostat,iotop。# -x 指明输出更加详细的信息,2 5 表示间隔2秒统计一次总共输出5次。# 第一行结果是自系统启动以来的统计值,通常排查突发的I/O异常时可忽略。# 重点看 %util 列,表示进程使用 I/O 的比例iostat -x 2 5 # 如果 iostat 中输出带有 dm-1 这样的虚拟设备,可以使用如下命令找到对应的设备ll /dev/mapper/# 使用iotop 找出引起高I/O的进程iotop# 如果没有安装 iotop 可以使用其他命令代替# 如果进程正在等待I/O,进行的状态码经常为D。通过这个信息,我们可以大概估算出哪些进程在I/O等待中for x in `seq 1 1 10`; do ps -eo state,pid,cmd | grep "^D"; echo "----"; sleep 5; done# 进一步用/proc目录下的信息来定位cat /proc/27456/iorchar: 42857442wchar: 35657666syscr: 44932syscw: 9744read_bytes: 1530859520write_bytes: 13824000cancelled_write_bytes: 1249280 注意:还有一些特殊情况 得具体问题具体分析