首页/系统/信创系统运维速查/swap 占用高的判断与处理
常见问题65 条

swap 占用高的判断与处理

swap 用掉一部分不等于故障:看 si/so 是否持续换入换出,再结合内存水位与 swappiness 判断是冷页沉淀还是内存不足。

信创系统运维速查系统更新于 2026-10-13

swap 占用高说明什么

swap 是磁盘上的交换空间,内核会把长期不访问的内存页换出到那里。swap 用掉一部分本身不是故障:关键看是否还在频繁换入换出(vmstat 的 si/so 两列)。si/so 接近 0 而 swap 占用高,通常只是冷内存沉淀;si/so 持续非零并伴随应用变慢,才是内存不足的信号。

基本信息

观察命令free -h、vmstat 1 5、swapon --show
关键指标si/so(换入换出速率)、SwapCached
内核参数vm.swappiness 控制主动换出倾向,各发行版默认值不同
风险操作内存紧张时 swapoff 会把换出页全部拉回物理内存
权限要求观察普通用户;调参数需 root

典型使用场景

  • 监控告警提示 swap 使用率超阈值,需要判断是否真故障
  • 应用响应变慢,怀疑与内存压力相关
  • 评估是否需要扩容内存或调整 swappiness
  • 排查 OOM 之前是否存在长时间内存压力
  • 虚拟机上核对 swap 配置是否符合基线要求

观察与判断

观察与判断
free -h                                  # 内存与 swap 的总量、已用量
swapon --show                            # swap 设备、大小与优先级
vmstat 1 5                               # si/so 持续非零表示存在实际换页
grep -E 'SwapTotal|SwapFree|SwapCached' /proc/meminfo   # 内核视角的细项
sysctl vm.swappiness                     # 当前换出倾向
ps -eo pid,rss,comm --sort=-rss | head   # 占用物理内存最大的进程
dmesg -T | grep -iE 'oom|out of memory' | tail   # 是否已发生过 OOM
# 谨慎使用:swapoff -a 会把换出页拉回内存,内存紧张时可能触发 OOM

指标逐项读法

指标含义判读结论
SwapUsed 高、si/so 接近 0冷页沉降到交换空间一般不需要处理
si/so 持续非零内存压力真实存在结合应用延迟判断是否扩容
SwapCached 较高换出的页又被换回并保留缓存说明这些页仍被频繁访问,值得关注
dmesg 出现 OOM内存已耗尽并杀进程优先扩容或收紧应用内存参数
降低 vm.swappiness 只是减少内核主动换出的倾向,并不能凭空增加内存:内存真的不够时换页依然会发生,只是被延后。
内存已经紧张时执行 swapoff -a 会把换出的页面全部拉回物理内存,可能直接触发 OOM 杀进程;确有必要时安排在维护窗口内操作。

易错点

  • 只看 swap 使用率就判定内存不足:先看 si/so,冷页沉淀与真实压力是两件事
  • 内存紧张时用 swapoff 释放磁盘空间:极易触发 OOM,风险高于收益
  • 照搬网上的 swappiness 推荐值:各发行版与云镜像默认值不同,先看现值再决定
  • 不查 OOM 日志就调参数:dmesg 的 OOM 记录能直接说明是哪类进程吃掉了内存
  • 忽略换页对后端存储的依赖:慢存储会放大换页带来的卡顿,虚拟化环境尤其明显

数据来源与参考

  • man 8 vmstat
  • man 5 proc
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌