温馨提示×

debian swapper为什么占用大

小樊
36
2026-10-21 21:56:25
栏目: 智能运维

在 Debian(以及大多数 Linux 发行版)里,swapper / swap 占用大通常不是“swapper 进程本身”吃了内存,而是** swap 空间被大量使用**了。下面分点说清楚原因和排查方法。


一、先澄清概念

  • swapper(PID 0):内核线程,几乎不占内存
  • swap 占用大:是指 /proc/swaps 或 free -h 里看到的 Swap 使用量高

你看到的“swapper 占用大”,基本都是 swap 使用量高被误读了。


二、Debian swap 占用大的常见原因

1️⃣ 物理内存不足

最常见原因:

  • 内存不够用
  • 系统把不常用的内存页换到 swap

查看:

free -h

如果:

Mem:  used 很高
Swap: used 很高

说明内存确实紧张。


2️⃣ swappiness 设置偏高

Debian 默认 swappiness=60,会较积极使用 swap。

查看:

cat /proc/sys/vm/swappiness

降低(临时):

sudo sysctl vm.swappiness=10

永久:

echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf

3️⃣ 某些进程长期占用但不活跃

例如:

  • 数据库
  • Java / Docker
  • 后台服务

它们内存被换出后长期不回收。

查看谁在用 swap:

sudo apt install smem
smem -s swap -r | head

或:

for f in /proc/*/status; do
  awk '/^Pid:|^Name:|^VmSwap:/{print}' "$f"
done | paste - - - | sort -k3 -n -r | head

4️⃣ 用了 zram / swapfile 配置异常

Debian 可能:

  • 启用了 zram
  • 或创建了很大的 swapfile

查看:

swapon --show

5️⃣ 系统长期不重启

  • 内存碎片
  • 缓存无法释放
  • swap 只增不减

可以手动释放(不危险):

sudo swapoff -a
sudo swapon -a

⚠️ 需确保有足够内存,否则会 OOM


三、是否正常?

  • ✅ 少量 swap 使用:正常
  • ⚠️ swap 持续增长 + 卡顿:异常
  • ❌ swap 占满 + 内存也满:危险

四、建议做法(总结)

  1. 看 free -h
  2. 看 swapon --show
  3. 降低 swappiness
  4. 找出 swap 大户
  5. 必要时加内存 / 调整服务

如果你愿意,可以把下面命令的输出贴出来,我可以帮你精准判断:

free -h
swapon --show
cat /proc/sys/vm/swappiness

0 踩