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

什么时候需要扩容swap?

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

操作前的准备

  • 确认当前swap状态:运行 swapon --showfree -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是不是你设置的大小。
也可以用 tophtop 查看swap用量。

重启后swap失效?

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

扩容后还是OOM怎么办?

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

如何缩小swap?

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

总结

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

分享到:
上一篇
定时清理磁盘日志防止站点磁盘爆满
下一篇
宝塔修改SSH端口拦截全网端口扫描
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意