温馨提示×

ubuntu swapper占用高怎么办

小樊
43
2026-09-27 20:07:27
栏目: 智能运维

在 Ubuntu 中,swapper(swap 使用率高)通常不是“进程”本身吃资源,而是内存不够,系统把内存数据换到 swap 分区/文件了。你看到的 swapper 或 kswapd0 高,往往是内存压力导致的现象。

下面按「先看原因 → 再优化 → 长期解决」来说。


一、先确认是不是 swap 真的占用高

free -h
swapon --show

重点看:

  • Swap 的 used 是否很大
  • 内存 Mem 的 available 是否很小

再看谁在吃内存:

top
# 或
htop

按 内存排序(top 中按 M)


二、临时缓解(立刻生效)

1️⃣ 释放 swap(前提是内存够)

sudo swapoff -a
sudo swapon -a

⚠️ 如果内存不足,这条会卡死或 OOM,谨慎用。


2️⃣ 降低 swap 使用倾向

Ubuntu 默认 swappiness=60,可以调到 10:

cat /proc/sys/vm/swappiness
sudo sysctl vm.swappiness=10

永久生效:

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

三、常见根因 & 对应解决办法

✅ 1. 内存真的不够(最常见)

  • 表现:available 内存很低,swap 持续增长
  • 解决:
    • 关掉不吃必要的服务
    • 升级内存(最根本)
    • 加 swap 文件(见下)

✅ 2. 某个程序内存泄漏

常见 culprit:

  • Java / Python 服务
  • Docker 容器
  • 浏览器(Chrome 特别能吃)

排查:

ps aux --sort=-%mem | head

解决:

  • 重启对应服务
  • 限制内存(Docker、systemd)

✅ 3. swap 文件太小或太慢

如果是 SSD 还好,HDD 会非常卡。

查看:

swapon --show

如果是 HDD + 小 swap → 卡 + 高 swap 使用


四、长期方案(推荐)

✅ 方案 A:加 swap 文件(比分区灵活)

sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

开机自动:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

✅ 方案 B:减少内存占用

  • 关掉 snap 不用的应用
  • 用轻量桌面(Xfce / LXQt)
  • 限制服务内存

✅ 方案 C:如果是服务器

  • 用 systemd 限制内存:
MemoryMax=512M

五、什么时候“swap 高”是正常的?

✅ 以下情况不用慌:

  • 内存充足,但 swap 有少量使用
  • 系统长时间运行,缓存被换出

❌ 以下才需要管:

  • 内存快满
  • 系统卡顿
  • kswapd0 CPU 高

如果你愿意,可以把下面命令的输出发我,我可以直接帮你判断:

free -h
swapon --show
top -b -n1 | head -20

我可以告诉你到底是内存不够,还是某个程序在作妖。

0 踩