当前位置:首页>Linux>Linux vmstat命令实战:3分钟判断服务器是否负载过高

Linux vmstat命令实战:3分钟判断服务器是否负载过高

  • 2026-10-21 13:29:27
Linux vmstat命令实战:3分钟判断服务器是否负载过高

服务器响应慢、接口超时?不用复杂监控工具,Linux自带的vmstat命令就能快速判断负载是否过高,定位CPU、内存或磁盘问题,新手也能上手!

一、vmstat是什么?

vmstat(虚拟内存统计)是系统自带监控命令,能实时输出进程、内存、CPU、磁盘I/O等关键信息,轻量无依赖,是排查服务器负载的入门必备工具。

二、基础用法(核心2种)

# 1. 单次输出(默认1次)vmstat# 2. 周期性输出(推荐):每隔1秒1次,共5次vmstat 1 5

参数说明:第一个数=采样间隔(秒),第二个数=采样次数;只写间隔则持续输出,Ctrl+C终止。多次采样能避免瞬时状态误导。

三、核心字段拆解(看懂就能判断)

执行vmstat后输出分6大模块,关键看3个核心模块,字段含义和判断标准如下:

1. Procs(进程状态)

  • r(运行队列数):运行/等待CPU的进程数,长期>CPU核心数×1.5~2 → CPU压力大(如4核>8即紧张);

  • b(阻塞进程数):等待资源(磁盘/网络)的进程数,长期>0 → 非CPU问题,其他资源瓶颈。

2. CPU(核心负载判断)

  • id(空闲率):核心指标!长期<20% → CPU几乎占满,负载过高;正常应>50%;

  • us(用户态使用率):应用程序占用,长期>80% → 应用代码/任务问题;

  • sy(系统态使用率):内核占用,长期>30% → 系统调度/调用过多;

  • wa(I/O等待率):等待磁盘I/O时间,长期>20% → 磁盘I/O瓶颈。

小提示:us+sy+id+wa≈100%,重点看id和wa快速定位问题。

3. Memory(内存状态)

  • swpd(交换分区使用):正常应≈0,长期>0且增长 → 物理内存不足;

  • free(空闲内存):长期<总内存10%+swpd增长 → 内存不足;

  • cache(缓存):可回收,free小但cache大不一定是内存不足。

四、3步实战判断负载

  1. 执行周期性采样:vmstat 2 10(每隔2秒1次,共10次);

  2. 看核心指标:id<20%→CPU负载高;r>核心数×2→CPU紧张;swpd增长→内存不足;

  3. 定位根源:id小+us大→应用问题;id小+sy大→系统问题;wa大→磁盘I/O;swpd增长→内存不足。

简例:高负载识别(4核CPU)

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st10  2  10240  51200  81920  204800   5    3   100   50  500 1200 65 25  5  5  0

判断:r=10>8(4核×2)、id=5%<20%、swpd增长 → 高负载,根源是应用占CPU/内存过多。

五、核心总结

1. 核心作用:快速判断CPU/内存/磁盘负载,定位瓶颈;2. 关键指标:id、wa(CPU),r(进程),swpd(内存);3. 排查逻辑:先看id判负载→再定位CPU/内存/磁盘问题。

互动:若vmstat输出wa长期>30%,你优先排查什么?评论区讨论~ 有用请点赞转发给运维/开发同学!

最新文章

随机文章