在 Ubuntu 中,swap 满了(swap 使用率 100%)通常说明内存不足,系统正在大量使用交换空间,可能导致系统卡顿甚至OOM(内存耗尽)。下面按紧急处理 → 查找原因 → 长期解决的顺序说明。
free -h
swapon --show
top
# 或
htop
重点看:
Mem 是否也快满了⚠️ 注意:清空 swap 前必须确保 物理内存足够,否则会直接 OOM 杀进程。
sudo swapoff -a
sudo swapon -a
如果提示:
swapoff failed: Cannot allocate memory
说明内存不够,不能这样做。
for file in /proc/*/status; do
awk '/VmSwap|Name/{printf "%s %s\n", $2, $1}' $file
done | sort -k2 -n
找到占用 swap 最多的进程后:
kill -9 PID
如果磁盘还有空间:
sudo fallocate -l 2G /swapfile2
sudo chmod 600 /swapfile2
sudo mkswap /swapfile2
sudo swapon /swapfile2
查看:
swapon --show
不用时删除:
sudo swapoff /swapfile2
sudo rm /swapfile2
如果是常年 swap 满 → 内存真的不够
cat /proc/sys/vm/swappiness
默认通常是 60,可改成 10:
sudo sysctl vm.swappiness=10
永久生效:
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
编辑 /etc/fstab,或新建更大的 swapfile
--memory)| 原因 | 说明 |
|---|---|
| 内存不足 | 最常见 |
| 内存泄漏 | 程序异常 |
| swappiness 太高 | 过早使用 swap |
| 大量小文件读写 | 缓存占用 |
| Docker / K8s | 默认不限制内存 |
swap 满 ≠ swap 问题,而是内存问题
临时靠加 swap / 杀进程,长期靠加内存 / 优化程序。
如果你愿意,可以贴一下:
free -h
swapon --show
我可以帮你具体判断是哪种情况。