温馨提示×

怎么让Swap不再频繁使用

小樊
40
2026-08-18 10:05:43
栏目: 编程语言

要减少 Linux 系统中 Swap 的频繁使用,核心思路是降低系统对 Swap 的依赖,让更多数据留在物理内存(RAM)中。以下是具体方法,按优先级从高到低排列:


一、优先方案:增加物理内存(最彻底)

如果内存长期不足(如 8GB 跑大型应用),加内存是最根本的解决方案。Swap 本质是“内存的备胎”,备胎用得多,说明主胎不够用。


二、临时调整:降低系统使用 Swap 的倾向(立即生效)

通过修改 swappiness 参数,控制内核何时开始使用 Swap。

1. 查看当前值

cat /proc/sys/vm/swappiness

默认值通常是 60(范围 0–100),值越大越倾向用 Swap。

2. 临时降低(立即生效)

sudo sysctl vm.swappiness=10
  • 10:仅在内存几乎耗尽时才用 Swap(推荐桌面/服务器)
  • 1:几乎不用 Swap(极端情况)
  • 0:在 3.5+ 内核中不是完全禁用,而是“最后才用”

3. 永久生效

编辑配置文件:

sudo nano /etc/sysctl.conf

添加或修改:

vm.swappiness=10

保存后生效:

sudo sysctl -p

三、检查并优化内存占用(治本)

1. 找出内存大户

top
# 或
htop
# 或按内存排序
ps aux --sort=-%mem | head

常见元凶:

  • Java / Python / Node 应用
  • 缓存服务(Redis、Memcached)
  • 浏览器(Chrome 多标签)
  • 数据库(MySQL、PostgreSQL)

2. 优化应用

  • 限制应用内存(如 JVM 的 -Xmx
  • 关闭不必要的服务
  • 减少开机自启程序

四、清理缓存(慎用,仅应急)

Linux 会缓存文件到内存(page cache),这不是问题,但如果你误以为“内存满了”,可以手动清:

# 仅清理缓存,不影响运行程序
sync
sudo sysctl vm.drop_caches=3

⚠️ 不建议长期这样做,缓存能提升性能。


五、调整 Swap 本身(不推荐频繁用)

1. 关闭 Swap(仅限内存非常充足)

sudo swapoff -a

永久关闭:注释 /etc/fstab 中的 swap 行。

⚠️ 风险:如果内存耗尽,可能直接 OOM(进程被杀)。

2. 使用 zram(适合小内存设备)

用压缩内存代替磁盘 Swap,速度更快:

sudo apt install zram-config   # Ubuntu

或手动配置 zram 设备。


六、确认 Swap 是否真的“频繁使用”

vmstatsar 看是否真的在频繁换入换出:

vmstat 1

关注:

  • si(swap in)
  • so(swap out)

如果长期为 0 或很小,说明 Swap 使用并不频繁,无需过度优化。


推荐配置总结

场景 建议
桌面 / 服务器 swappiness = 10
内存 ≥ 16GB swappiness = 1~5
小内存设备 启用 zram
内存严重不足 加内存

如果你愿意,可以把以下信息发我,我可以给你更精确的建议

  • 系统版本(uname -a
  • 内存大小(free -h
  • Swap 大小
  • 主要用途(桌面 / 服务器 / 容器 / 数据库)

0