Linux 服务器性能排查:free -m 与 vmstat 1 命令详解
本文讲解 Linux 运维中最常用的两个性能排查命令 free -m 和 vmstat 1,主要用于 网站卡顿、接口慢、服务器负载高、内存溢出、IO 瓶颈 问题定位,内容通俗易懂,适合新手学习与生产环境实操。
一、free -m 查看服务器内存状态
1. 命令作用
free -m:查看服务器物理内存与交换分区使用情况,-m 表示以 MB 为单位展示,数据直观易读,是排查内存问题的基础命令。
2. 执行命令
free -m3. 典型输出示例
total used free shared buff/cache available
Mem: 3789 1205 412 82 2171 2394
Swap: 4095 0 40954. 字段详细解释
Mem(物理内存)
total:服务器总物理内存大小
used:已被系统、程序、服务占用的内存
free:完全空闲的裸内存(数值小是正常现象)
shared:多个进程共享的内存空间
buff/cache:缓冲区 + 文件缓存内存
Linux 会自动利用空闲内存缓存文件、磁盘读写数据,提升访问速度
该部分内存可随时回收给应用程序使用,不属于占用内存
available(核心指标):系统真正可用内存
= 剩余free内存 + 可回收cache内存
判断内存是否充足,只看 available!
Swap(交换分区,磁盘虚拟内存)
total:交换分区总大小
used:已使用的交换分区空间
free:空闲交换分区空间
5. 内存排查核心结论
误区:不要以
free列数值大小判断内存是否不足正确判断:优先看
available可用内存危险信号:Swap used 持续上涨、频繁变动 = 物理内存不足,会导致网站卡顿、程序响应慢
正常现象:free 很小,但 available 充足、Swap 未使用,服务器内存状态健康
二、vmstat 1 实时监控系统负载
1. 命令作用
vmstat 1:全方位实时监控服务器 进程、内存、Swap、磁盘IO、系统中断、CPU占用 状态。1 代表 每秒刷新一次数据,是排查服务器综合性能瓶颈的核心命令。
2. 执行命令
vmstat 1
# 停止监控:按下 Ctrl + C3. 典型输出示例
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 42100 35680 2218600 0 0 2 15 432 1256 12 3 83 2 04. 全字段分组详解
① procs 进程状态
r:等待运行的就绪进程数
r 持续大于 CPU 核心数:CPU 算力不足,请求排队,网站响应卡顿
b:阻塞睡眠进程(等待磁盘IO)
b 持续大于0:存在磁盘IO阻塞,有任务长期等待磁盘读写
② memory 内存状态(单位:KB)
swpd:已使用的 Swap 交换分区大小
free:空闲物理内存
buff:缓冲区内存
cache:文件缓存内存
③ swap 交换分区(内存瓶颈核心指标)
si:swap in,数据从磁盘交换区读入物理内存
so:swap out,数据从物理内存写入磁盘交换区
预警:si、so 持续不为0 = 物理内存严重不足,服务器性能暴跌
④ io 磁盘读写状态
bi:磁盘每秒读取数据量
bo:磁盘每秒写入数据量
bi/bo 数值长期过高,说明磁盘频繁读写,大概率存在IO瓶颈(常见于数据库服务器)
⑤ system 系统内核状态
in:每秒系统中断次数
cs:每秒进程上下文切换次数
cs 数值异常巨大:线程频繁切换,消耗大量CPU资源,降低服务器效率
⑥ CPU 占用状态(总和≈100%)
us:用户态CPU(网站程序、Java/PHP/Go业务进程占用)
sy:内核态CPU(系统内核调度占用)
id:空闲CPU占比
wa(核心):IO等待CPU占比
wa 持续 > 10%:磁盘读写速度跟不上,大量进程等待IO,网站加载缓慢
st:虚拟机被宿主机抢占的CPU(云服务器基本为0)
三、万能排障口诀(快速定位问题)
us高、id低:CPU 算力不足,程序运算压力大
wa高、bi/bo高:磁盘 IO 瓶颈,数据库读写阻塞
si/so 不停跳动:内存不足,频繁读写虚拟内存
r 队列长期偏高:CPU 任务排队,并发承载能力不足
四、生产环境标准排查流程
先用
free -m查看内存基线,确认可用内存、Swap占用情况再用
vmstat 1实时观察动态负载,定位瓶颈类型Swap 占用上涨 + si/so 不为0 → 内存瓶颈
CPU空闲高 + wa 很高 → 磁盘/数据库IO瓶颈
us 占用极高 + id 极低 → CPU算力瓶颈
五、拓展实用命令
# 人性化展示内存(自动适配单位)
free -h
# 仅监控5次后自动退出,无需手动停止
vmstat 1 5六、常见新手误区
❌ 误区:free 空闲内存小 = 内存不够用
✅ 正确:Linux 缓存机制会最大化利用内存,以 available 和 Swap 状态为准
❌ 误区:手动清理缓存提升性能
✅ 建议:生产环境无需手动清缓存,缓存可大幅提升文件访问效率