服务器响应慢、接口超时?不用复杂监控工具,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(进程状态)
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步实战判断负载
执行周期性采样:vmstat 2 10(每隔2秒1次,共10次);
看核心指标:id<20%→CPU负载高;r>核心数×2→CPU紧张;swpd增长→内存不足;
定位根源: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%,你优先排查什么?评论区讨论~ 有用请点赞转发给运维/开发同学!