温馨提示×

服务器要开ubuntu swap吗

小樊
52
2026-09-04 03:20:27
栏目: 云计算

是否要在 Ubuntu 服务器上开启 swap(交换分区/交换文件),取决于你的服务器内存大小、用途和负载情况。下面给你一个清晰的判断指南。


一、什么时候「建议开 swap」

1️⃣ 内存较小(≤ 2GB)

强烈建议开 swap

  • 防止 OOM(Out Of Memory)直接杀进程
  • 常见配置:
    • 1GB 内存 → 1–2GB swap
    • 2GB 内存 → 2GB swap

2️⃣ 内存 2–4GB,且运行多个服务

建议开:

  • Web + 数据库 + 缓存
  • CI / 编译任务
  • 内存可能突发占用

3️⃣ 云服务器(尤其是低配 VPS)

  • 很多 VPS 默认没 swap
  • 开 swap 能显著提高稳定性

4️⃣ 使用内存型应用但允许“慢一点”

  • Java / Python / Node 服务
  • 短时间内存峰值可接受

二、什么时候「可以不加 swap」

1️⃣ 内存 ≥ 8GB,且负载稳定

  • 纯 Nginx / 反向代理
  • 单一服务、内存可控

2️⃣ 高性能 / 低延迟场景

  • 数据库主节点(MySQL / PostgreSQL)
  • 交易、实时系统
  • swap 会导致明显延迟

✅ 这类场景通常:

  • 关闭 swap
  • 或设置 swappiness=1

三、Ubuntu 推荐做法(通用)

✅ 小内存服务器(最常见)

# 创建 2G swap
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# 开机自动挂载
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

✅ 调整 swap 使用倾向

# 查看
cat /proc/sys/vm/swappiness

# 修改(推荐 10)
sudo sysctl vm.swappiness=10

写入持久化:

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

四、数据库服务器特别说明

数据库 建议
MySQL 小内存开 swap,大内存关或低 swappiness
PostgreSQL 不建议频繁 swap
Redis ❌ 不要 swap(会爆炸)

五、快速判断一句话总结

内存 < 4G → 开 swap
内存 ≥ 8G 且稳定 → 可不开
数据库 / 低延迟 → 谨慎开

如果你愿意,可以告诉我:

  • 服务器内存多大
  • 跑什么服务(Web / DB / Docker)

我可以直接给你最合适的 swap 方案。

0 踩