理解CentOS中vmstat输出的关键指标
在CentOS系统中,vmstat
是一款用于监控系统资源使用情况的实用工具,它能实时反馈进程、内存、CPU、磁盘I/O等关键数据,帮助管理员快速定位性能瓶颈,本文将以实际场景为例,解析vmstat
,并提供优化建议。

vmstat的基本用法与输出结构
执行命令vmstat [间隔时间] [次数]
即可启动监控。
- vmstat 1 5
表示每秒采集一次数据,共采集5次。
输出分为六个部分:
1、Procs(进程)
2、Memory(内存)

3、Swap(交换分区)
4、IO(磁盘读写)
5、System(系统中断)
6、CPU(处理器使用率)
关键字段解析与性能诊断
1. Procs模块

r:等待运行的进程数,若长期高于CPU核心数,说明系统负载过高。
b:处于不可中断睡眠状态的进程数,数值突增可能因I/O阻塞或资源争用导致。
2. Memory模块
swpd:已使用的交换分区大小,若持续增长,需检查物理内存是否不足。
free:空闲内存量,结合buff
(缓冲)和cache
(缓存)判断内存压力。
3. Swap模块
si:每秒从磁盘读入交换区的数据量(KB)。
so:每秒写入磁盘的交换区数据量(KB)。
若两者频繁大于0,需优先扩容内存或优化应用。
4. IO模块
bi:每秒从块设备读取的数据量(KB)。
bo:每秒写入块设备的数据量(KB)。
高I/O可能由频繁磁盘读写引起,需结合wa
(CPU等待I/O时间)进一步分析。
5. CPU模块
us:用户进程消耗的CPU时间占比。
sy:内核进程消耗的CPU时间占比。
id:CPU空闲时间占比。
若us
长期高于70%,需考虑优化代码或升级硬件;sy
过高可能因系统调用频繁。
实战案例:如何利用vmstat优化服务器性能
场景:某网站访问延迟骤增,vmstat
输出显示:
r列持续为8(CPU为4核)
wa列平均为25%
so列偶尔大于0
分析:
1、运行队列过长,表明CPU资源不足,需检查高负载进程。
2、较高I/O等待时间,结合bi/bo
确认是否为磁盘瓶颈。
3、少量交换分区使用,建议增加内存或减少内存占用。
优化措施:
- 通过top
或pidstat
定位CPU密集型进程,优化其资源配置。
- 将频繁读写的日志文件迁移至独立磁盘,分散I/O压力。
- 调整应用内存分配策略,避免触发交换机制。
作为站长,个人习惯在每日巡检中运行vmstat
,结合mpstat
和iostat
生成综合报告,建议将关键指标纳入监控系统,设置阈值告警,而非仅依赖临时排查,系统的稳定性往往源于持续观察与微小调整的积累。