swap分区扩容缓解服务器OOM内存溢出

什么时候需要扩容swap?

当服务器持续出现OOM(Out of Memory)异常,或者关键进程被系统杀死时,很多人第一反应是加物理内存。
但预算有限或无法立即停机时,扩容swap分区可以临时争取缓冲时间。
swap是磁盘上划出的专门区域,当物理内存不足时,系统会把不活跃的内存数据换到swap里,从而释放物理内存给正在运行的程序。
注意:swap只是“救急”,不能替代物理内存,如果swap使用率持续很高,说明内存真的不够了,还是需要加内存或优化程序。

操作前的准备

  • 确认当前swap状态:运行 swapon --show 或 free -h,查看已有swap大小和已用空间。如果swap为0,说明没启用;如果已有但很小,比如只有1GB,考虑扩容。
  • 检查磁盘剩余空间:运行 df -h,找一个磁盘空间充足的挂载点(例如 /或/home)。如果你是用swap分区而非文件,操作更复杂,本文推荐新手直接创建swap文件,灵活且安全。
  • 确保有root权限:以下命令都需要root或sudo。

核心操作:创建并启用swap文件

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

/swapfile 是一个常见的路径,大小可以根据物理内存来定,建议物理内存的1~2倍,但不要超过4GB(除非你磁盘和业务完全撑得住)。
例如物理内存2GB,可以设2~4GB。
运行:

sudo dd if=/dev/zero of=/swapfile bs=1M count=2048

这里 count=2048 表示2GB。bs=1M 是每次写入1MB。
等待几秒到几十秒,文件就创建好了。

第二步:设置安全权限

swap文件包含内存数据,不能让普通用户读取:

sudo chmod 600 /swapfile

第三步:将文件格式化为swap格式

sudo mkswap /swapfile

输出会看到swap的UUID等信息。

第四步:启用swap文件

sudo swapon /swapfile

此时再用 swapon --show 就能看到新swap已生效。

第五步:设置开机自动挂载

编辑 /etc/fstab:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

建议追加检查,用 cat /etc/fstab 确认末尾有这行。

避坑与注意事项

  • swap文件不要放在太满的分区上:如果磁盘空间使用率超过90%,swap文件可能导致磁盘I/O飙升,反而拖慢系统。建议留至少10%空闲。
  • swap大小不是越大越好:过大的swap会让系统频繁换入换出,性能急剧下降,出现“假死”。通常物理内存≤2GB时swap设为倍,内存≥8GB时swap可以设为8GB甚至更小,具体看应用。
  • 云服务器特别注意:如果云服务器的系统盘是SSD还好,如果是传统机械盘或共享存储,swap读写可能造成高延迟,需要监控平均负载。
  • 旧swap分区卸载:如果你之前有swap分区且不大,可以先用 swapoff /dev/sdX 停用再挂载新文件,但注意顺序:先停用旧分区,再启用新文件。
  • 永久调整swappiness(可选):控制系统优先使用swap的倾向,数值0~100,默认60。如果想让系统尽量少用swap,可临时设为10:
  sudo sysctl vm.swappiness=10

永久修改在 /etc/sysctl.conf 添加 vm.swappiness=10。

验证与常见问题

怎么确认swap已经生效?

运行 free -h,看“Swap”行的total是不是你设置的大小。
也可以用 top 或 htop 查看swap用量。

重启后swap失效?

检查 /etc/fstab 是否写对,行末尾不能有空格,且路径正确。
如果用的是旧分区,开机脚本也可能冲突,建议只保留一种方式。

扩容后还是OOM怎么办?

说明物理内存缺口很大,swap也只能延缓。
你需要考虑升级实例配置、优化程序内存泄漏、或增加Redis等缓存中间件。

如何缩小swap?

先 swapoff /swapfile,然后删掉文件,重新按需要的大小创建即可。

总结

通过扩容swap分区或创建swap文件,你可以低成本、零停机地缓解服务器OOM内存溢出问题。
本文的方法适合所有Linux发行版(CentOS、Ubuntu、Debian等),操作简单,关键是一步一验证。
建议优先采用swap文件方案,灵活且风险低。
如果你在做完扩容后依然频繁遇到OOM,请抓紧排查业务内存使用,这才是根本解决之道。

分享到:
上一篇
定时清理磁盘日志防止站点磁盘爆满
下一篇
宝塔修改SSH端口拦截全网端口扫描
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 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意