服务器swap分区扩容缓解OOM

什么情况下需要给服务器扩容Swap?

当系统物理内存(RAM)不足时,Linux内核会触发OOM killer(Out-Of-Memory Killer),随机杀掉进程来释放内存。
这种情况在运行数据库、Java应用或高并发网站时尤其常见。Swap(交换分区或交换文件) 就是硬盘上的一块空间,被当作“虚拟内存”使用。
扩容Swap能让系统在内存吃紧时把不活跃的数据挪到硬盘,降低OOM发生的概率。

操作前先确认这几件事

  1. 检查当前Swap大小:
   free -h
   swapon --show

如果Swap显示为0或者远小于内存(推荐Swap至少等于内存的50%到100%),就需要扩容。

  1. 确认磁盘空闲空间:
   df -h

找一个剩余空间较大的分区(比如 / 或 /home),我们将在这个分区下创建Swap文件。

  1. 备份重要数据:虽然创建Swap文件风险很低,但建议提前备份 /etc/fstab 文件:
   cp /etc/fstab /etc/fstab.bak

扩容Swap的完整步骤(文件方式)

以下操作在CentOS 7/8、Ubuntu 20.04+/Debian 11上均测试通过。

第一步:创建指定大小的Swap文件

例如要增加4GB Swap,执行:

dd if=/dev/zero of=/swapfile bs=1M count=4096
  • if=/dev/zero 表示从空设备读取。
  • of=/swapfile 表示目标文件路径(可以换成其他位置,如 /data/swapfile)。
  • bs=1M count=4096 表示总大小4GB(4096个1MB块)。

第二步:设置文件权限

Swap文件必须只有root可读写,否则系统会拒绝使用:

chmod 600 /swapfile

第三步:将文件格式化为交换空间

mkswap /swapfile

第四步:激活Swap文件

swapon /swapfile

此时用 free -h 或 swapon --show 应该能看到新的Swap大小。

第五步:永久启用(开机自动挂载)

编辑 /etc/fstab 文件,在末尾添加一行:

echo '/swapfile none swap sw 0 0' >> /etc/fstab

注意:如果Swap文件路径不是 /swapfile,请替换为实际路径。

必须注意的几个坑

  • 不要使用Btrfs、ZFS、NFS等文件系统:这些文件系统对Swap支持不好,建议使用ext4或xfs。可以用 df -T /swapfile 查看所在分区文件系统类型。
  • Swap文件不能放在LVM条带化卷或RAID0上:否则可能造成性能问题。普通单盘或RAID1都可以。
  • Swap大小不宜过大:一般建议不超过物理内存的2倍,过大的Swap反而会让系统频繁换页,拖慢响应。
  • 如果系统内存严重不足,直接调 vm.swappiness:
  sysctl vm.swappiness=10
  echo 'vm.swappiness=10' >> /etc/sysctl.conf

值越小越不倾向使用Swap(默认60),但对于OOM发起的场景,调低反而能减少Swap占用。

验证扩容是否生效

  1. 查看当前Swap总量和使用量:
   free -h
  1. 检查所有已激活的Swap源:
   swapon --show
  1. 模拟内存压力(谨慎使用,仅用于测试):
   stress --vm 2 --vm-bytes 2G --timeout 30s

观察 free -h 中Swap使用量的变化,并注意没有进程被OOM杀掉。

高频问题解答

Q:扩容Swap后系统变卡了怎么办?
A:可能是swappiness值过高,按上面方法调低到10-20,重启后生效。

Q:我想删除旧的Swap分区,怎么操作?
A:先 swapoff /dev/旧分区,然后从 /etc/fstab 中删除对应行,最后用 fdisk 或 parted 删除分区。

Q:可以用Swap分区而不是文件吗?
A:可以,但分区扩容不如文件灵活。文件方式适合大多数场景,且无需额外分区操作。

如果你正在处理服务器Swap分区扩容缓解OOM的问题,建议先按本文步骤完整执行,再根据自己的环境微调swappiness或Swap大小;
遇到异常时优先回看避坑和高频问题部分。

分享到:
上一篇
Nginx站点隔离防跨站入侵教程
下一篇
跨境独立站域名备案免备案区别:跨境独立站域名备案与免备案的区
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意