在 CentOS(以及大多数 Linux 发行版)中,swap 占用高通常不是“内存马上不够用”的唯一信号,而是和 Linux 的内存管理策略有关。下面按常见原因 → 排查方法 → 解决思路来说明。
Linux 有一个参数 swappiness,决定系统“多积极”地把内存页换出到 swap。
30(CentOS 7/8)查看:
cat /proc/sys/vm/swappiness
即使后来:
已经换出到 swap 的数据不会自动换回内存,除非再次被访问。
结果就是:
例如:
这些内存页容易被换出。
某些进程:
free -h
关注:
Mem 是否还有可用Swap 用了多少for file in /proc/*/status; do
awk '/VmSwap|Name/{printf "%s %s\n", $1, $2}' "$file"
done | sort -k2 -h | tail
或(CentOS 8+):
smem -s swap -r | head
sysctl vm.swappiness
sysctl vm.swappiness=10
永久生效:
echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p
服务器一般建议
10,数据库场景甚至1
⚠️ 前提:内存足够
swapoff -a
swapon -a
这会:
如果某些服务:
考虑:
如果:
那说明:
swap 高只是“症状”,内存不足才是“病根”
✅ 以下情况不用慌:
❌ 需要关注:
CentOS swap 占用高,不一定是内存不够,更多时候是:
- swappiness 设置高
- 历史换出未换回
- 某些进程低频占用
如果你愿意,可以贴一下:
free -h
swapon -s
cat /proc/sys/vm/swappiness
我可以帮你具体判断是哪种情况。