Swap不是物理内存替代品,而是内存紧张时的缓冲机制;8GB及以下内存配2倍Swap,8GB以上配等量或略小,服务器高负载可按RAM+2GB起步,优先用Swap文件并设swappiness=10以平衡响应与稳定。

Swap空间不是物理内存的替代品,而是系统在内存紧张时的缓冲机制。配置得当能避免OOM Killer误杀进程,但配错反而拖慢响应——关键不在“有没有”,而在“怎么配”。
Swap大小怎么定?看内存容量和用途
通用建议如下:
- 8GB及以下内存:Swap设为物理内存的2倍(例如4GB内存配8GB Swap)
- 8GB以上内存:Swap等于或略小于物理内存(如16GB内存配12–16GB Swap)
- 服务器负载高、运行数据库或Java应用:可按“RAM + 2GB”起步,再根据
free -h和swapon --show实际使用率微调 - 纯SSD环境且写入频繁:不建议盲目放大Swap,优先考虑加物理内存
用Swap文件比Swap分区更实用
现代Linux发行版默认倾向Swap文件,因为灵活、易扩容、无需重分区:
- 创建示例(2GB):
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress - 必须收紧权限:
sudo chmod 600 /swapfile,防止非root用户读取潜在敏感数据 - 格式化并启用:
sudo mkswap /swapfile && sudo swapon /swapfile - 验证是否生效:
swapon --show应列出/swapfile,free -h中Swap行有对应数值
让Swap真正“按需启用”,而不是常驻抢资源
Linux默认swappiness=60,意味着内核较早开始换出内存页。对多数服务器,建议压低:
- 临时调整:
sudo sysctl vm.swappiness=10 - 永久生效:向
/etc/sysctl.conf追加vm.swappiness=10,再执行sudo sysctl -p - 值为0不代表禁用Swap(仅在OOM时启用),10–30之间是平衡响应与稳定性的常见区间
开机自动挂载与安全清理
Swap文件要持久化,必须写入/etc/fstab:
- 添加一行:
/swapfile none swap sw 0 0 - 若需删除旧Swap:先
sudo swapoff /swapfile,再删文件、清fstab条目 - 修改后建议重启或手动
sudo swapon -a加载fstab中所有Swap项 - 注意:Swap文件不要放在LVM逻辑卷或网络文件系统(NFS)上,内核不支持

















