首页/系统/Linux 运维命令速查/场景:内存不足与 swap 抖动定位
性能与监控48 条

场景:内存不足与 swap 抖动定位

系统卡顿+swap 活动高:判断是真内存不足、缓存策略问题还是泄漏;处理顺序是先保命再根治。

Linux 运维命令速查系统更新于 2026-10-12
场景内存压力大、swap 换入换出
目标定位内存消耗源与恢复策略
工具链free → vmstat → ps/smem → 处置

第 1 步:总体

第 1 步:总体
free -h
vmstat 1 5 | tail -n +2    # 关注 si/so

第 2 步:找大户

第 2 步:找大户
ps aux --sort=-rss | head -n 15
smem -rk 2>/dev/null | head -n 15 || echo 'smem 未安装,用 ps 替代'
pidstat -r 1 3 | head

第 3 步:内核与缓存

第 3 步:内核与缓存
grep -E 'Slab|SReclaimable|SUnreclaim' /proc/meminfo
slabtop -s c -o | head

第 4 步:处置

第 4 步:处置
# 低 trivially:echo 1 > /proc/sys/vm/drop_caches(仅在明确缓存干扰时,生产慎用)
# 常见:重启/限制大户,或加内存
# 防复发:systemd MemoryMax / 应用堆参数 / 泄漏修复
drop_caches 会造成短时 IO 抖动且治标不治本;除非在做基准测试否则不要拿它当运维手段。

易错点

  • 只看 free 列少就重启服务:重启前先留证据(top/ps 快照),否则根因永远找不到
  • 内核缓存与页缓存吃满是设计行为:真正指标是 available 与 swap 活动

数据来源与参考

  • man 5 proc(meminfo/sysctl/vm)
  • man 1 ps(procps-ng)
  • 内核文档 mm

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌