CentOS 下 Swap 被大量占用,通常不是“Swap 本身坏了”,而是 内存压力、缓存回收机制或某些进程的内存行为 导致的。下面从 原因排查 → 常见原因 → 解决方案 系统说明。
free -h
swapon -s
重点关注:
Swap Used 是否持续增长当 物理内存使用接近 100% 时,系统会被迫把内存页换出到 Swap。
检查:
free -h
htop
现象:
✅ 这是 正常现象,不是 bug
某些程序持续申请内存不释放,最终导致 Swap 上涨。
排查:
top
# 或
ps aux --sort=-%mem | head
重点看:
RES 占用大的进程Linux 会把空闲内存用于 page cache / buffer。
free -h
如果看到:
Mem: total used free buff/cache
✅ buff/cache 高 ≠ 内存不足 系统会在需要时自动回收。
swappiness 控制 内存还剩多少时开始用 Swap。
查看:
cat /proc/sys/vm/swappiness
30修改(临时):
sysctl vm.swappiness=10
永久:
echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p
✅ 在 大内存服务器上可显著减少 Swap 使用
容器内存限制 + 系统 Swap 同时存在:
检查:
docker stats
解决:
一旦内存页被换出到 Swap:
表现:
这是 设计行为,不是异常
除非:
swapoff -a
swapon -a
⚠️ 风险:
| 现象 | 是否正常 |
|---|---|
| Swap 占 30%,内存充足 | ✅ 正常 |
| Swap 占 70%,系统卡 | ⚠️ 有问题 |
| Swap 一直增长 | ❌ 需排查 |
| Swap 高但性能正常 | ✅ 可接受 |
✅ CentOS Swap 被大量占用,通常不是系统问题,而是:
✅ 核心思路:
先看内存,再看进程,再调 swappiness,最后才考虑 Swap 本身
如果你愿意,可以把下面信息发我,我可以帮你精准判断:
free -h 输出top 前几行我可以给你 针对性的优化方案。