在 Debian(以及大多数 Linux 发行版)中,swapper(swap 空间)频繁启用/使用,通常不是“swap 被主动启用”,而是 系统内存压力导致内核把内存页换出到 swap。下面从原因、判断方法、优化手段几个层面说明。
当 可用内存(available memory)持续偏低 时,内核会:
表现:
free -h 中 available 很小si(swap in)/ so(swap out)频繁不为 0swappiness 决定内核“多早开始用 swap”:
60cat /proc/sys/vm/swappiness
在 内存足够的服务器 上,60 可能导致不必要的 swap。
即使总内存够,也可能:
内核会选择“冷”内存换出。
例如:
它们可能:
→ 被 swap 出去
如果是:
swap 被使用是设计行为,不是异常。
vmstat 1
关注:
si(swap in)so(swap out)持续 > 0 才是真正“频繁”。
for pid in $(ls /proc | grep '^[0-9]'); do
awk -v p=$pid '/VmSwap/ {print p, $2}' /proc/$pid/status
done | sort -k2 -n -r | head
可以看到 哪个进程占用了最多 swap。
free -h
cat /proc/meminfo | grep -E 'MemAvailable|SwapTotal|SwapFree'
sudo sysctl vm.swappiness=10
永久生效:
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
服务器常见值:10–30
桌面:30–60
如果:
available 长期 < 10%那基本就是内存不够。
例如 Docker:
--memory=2g
JVM:
-Xmx2g
适合:
sudo apt install zram-tools
top
htop
重点看:
✔ 内存偶尔紧张但能恢复
✔ swap 使用但不影响性能
✔ 笔记本休眠
❌ 以下不是正常:
Debian 中 swapper 频繁启用,本质是 内存压力 + swappiness 策略,不一定是故障,但通常是“该优化或加内存”的信号。
如果你愿意,可以贴一下:
free -hvmstat 1 输出我可以帮你具体判断是不是异常。