Ubuntu 下 Swap(交换空间) 的设置并没有“唯一标准”,但结合多年生产环境和桌面/服务器实践,可以总结出一套相对稳妥、性能与安全兼顾的最佳实践。下面按 场景 → 建议 → 操作命令 的方式说明。
| 内存大小 | Swap 建议 |
|---|---|
| ≤ 2GB | 2 × RAM |
| 2–8GB | = RAM |
| 8–64GB | 0.5–1 × RAM |
| > 64GB | 4–16GB(或更小) |
| 场景 | 建议 |
|---|---|
| 桌面 / 开发机 | RAM 的 0.5–1 倍 |
| 8GB 云服务器 | 8GB |
| 16GB 服务器 | 8–16GB |
| 数据库 | 至少 4–8GB |
| 休眠(hibernate) | ≥ RAM |
sudo fallocate -l 8G /swapfile
如果 fallocate 不可用(某些文件系统):
sudo dd if=/dev/zero of=/swapfile bs=1M count=8192
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
| 场景 | swappiness |
|---|---|
| 桌面 | 10–30 |
| 服务器 | 10 |
| 数据库 | 1–10 |
| 低内存 | 30–60 |
sudo sysctl vm.swappiness=10
永久生效:
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
free -h
swapon --show
top
htop
vmstat 1
检查是否有异常 swap 抖动:
sar -W 1
正确理解:
Swap 是保险,不是长期运行区。
没有 Swap ≠ 快,只等于更容易 OOM。
太大:
现代 SSD:
vm.overcommit_memory 合理sudo swapoff /swapfile
sudo swapoff /swapfile
sudo fallocate -l 16G /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
Ubuntu Swap 的最佳实践:
给一点 Swap,但别让它真的被用太多;
用 Swap File,调低 swappiness,生产环境保留它。
如果你愿意,我也可以: