Linux sar / iostat / vmstat / mpstat 的性能监控组合使用模板

2次阅读

sar、iostat、vmstat 和 mpstat 组合使用可全面监控 linux 系统性能:sar 查 cpu/内存/磁盘历史与实时,iostat 分析磁盘 i/o 性能,vmstat 观察进程调度与内存交换,mpstat 定位多核 cpu 负载不均衡。

Linux sar / iostat / vmstat / mpstat 的性能监控组合使用模板

Linux 系统性能监控中,sariostatvmstatmpstat 各有侧重,组合使用才能全面覆盖 CPU、内存、磁盘 I/O、网络(间接)、进程调度和多核负载。下面给出一套实用、可复用的监控组合模板,兼顾实时观测与历史回溯能力。

基础组合:5秒级实时诊断(适合线上问题快速定位)

当系统响应变慢、CPU 占用异常或服务卡顿时,用以下命令并行观察:

  • sar -u 5 3 —— 每5秒采样1次,共3次,看整体 CPU 使用率(%user/%system/%iowait/%idle),重点关注 %iowait 是否持续 >10%
  • iostat -x 5 3 —— 同步采样,重点看 %util(设备饱和度)、await(I/O 平均等待毫秒)、r_await/w_await、svctm(已弃用,但可辅助判断队列深度);若 %util 接近 100% 且 await 显著升高,说明磁盘瓶颈
  • vmstat 5 3 —— 关注 r(运行队列长度)、b(阻塞进程数)、si/so(swap 进出 KB/s)、bi/bo(块设备读写 KB/s);r > CPU 核心数 × 2 或 so > 0 是严重信号
  • mpstat -P ALL 5 3 —— 查看每颗逻辑 CPU 的使用分布,识别是否单核打满(如某 core %usr 达 95%+ 而其余 idle),排除不均衡调度或绑核问题

长期趋势采集:用 sysstat 后台守护 + 定时归档

确保 sysstat 已启用(ubuntu/debian 默认安装,RHEL/centosyum install sysstat && systemctl enable sysstat),它会自动每10分钟运行 sar 并保存二进制数据到 /var/log/sysstat/

  • 每日凌晨自动轮转日志:/etc/cron.d/sysstat 中默认配置已包含
  • 查看昨日全天 CPU 负载峰值:sar -u -f /var/log/sysstat/sa$(date -d yesterday +%d)
  • 导出某日磁盘延迟趋势为 CSV(便于 excel 分析):sar -d -f /var/log/sysstat/sa15 | grep -v 'Average|Linux' | awk '{print $1","$8","$9","$10}' > io-20240415.csv($8=await, $9=r_await, $10=w_await)

针对性排查场景速查表

根据现象快速选择组合子集:

  • 高负载但 CPU idle 高 → 优先 vmstat 1 看 r/b 列;若 r 大 b 小,可能是大量短时进程竞争;若 b 大,检查 I/O 或锁(如 lsof +D /data
  • 数据库响应慢 + iowait 高iostat -x 1 确认是哪块盘(如 nvme0n1);再 pidstat -d 1 找出 top I/O 进程;结合 iotop -o 实时验证
  • Java 应用 GC 频繁 + 内存不足迹象vmstat 2 看 si/so 是否非零;sar -r 2 查 %memused 和 kbmemfree;再用 free -hcat /proc/meminfo | grep -E "Active|Inactive|Swap" 细查页回收状态
  • 容器环境 CPU 使用率“虚高”mpstat -P ALL 1 对比宿主机各核与容器内 top -H 输出线程绑定关系;注意 cgroup 限频导致的 %steal 升高(Xen/KVM 虚拟化下常见)

进阶技巧:一次命令聚合关键指标

避免反复敲多个命令,可用 shell 函数封装(加入 ~/.bashrc):

perfwatch() {   echo "== CPU =="; mpstat -P ALL 1 2 | tail -n 2   echo -e "n== MEM/IO =="; vmstat 1 2 | tail -n 1   echo -e "n== DISK X =="; iostat -x 1 2 | grep -E "(nvme|sda|vda)|await" | tail -n +2 }

执行 perfwatch 即输出精简版四维快照,适合运维巡检或交接班记录。

text=ZqhQzanResources