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

当你发现服务器频繁报出“Out of memory”错误,甚至关键进程被系统强制杀死(OOM Killer),很可能是物理内存不足,而swap分区太小或未配置。swap分区(交换分区)本质是磁盘空间模拟出的内存,虽然速度远不及物理内存,但能有效防止因内存耗尽导致的进程崩溃。
这篇文章会带你从零开始扩容swap分区,让服务器喘口气。

动手前先看这两点

扩容前需要确认两件事:当前swap用量和可用磁盘空间。
执行以下命令检查当前swap状态:

swapon --show
free -h

如果swapon --show没有输出,说明没有启用任何swap。
接着用df -h查看根目录或你想存放swap文件的目录是否有足够空闲磁盘。
一般建议swap大小为物理内存的1-2倍,但如果磁盘紧张,至少能划出1-2GB来应急。

创建并启用新的swap文件(最快方法)

如果你没有独立swap分区,创建swap文件是最灵活的方式。
以下步骤使用fallocate快速分配一个2GB的交换文件,你也可以根据需要调整大小。

  1. 创建交换文件(以2GB为例):
   sudo fallocate -l 2G /swapfile

如果系统不支持fallocate,可以用dd命令替代:

   sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
  1. 设置正确的权限(只有root可读写):
   sudo chmod 600 /swapfile
  1. 将文件格式化为swap格式:
   sudo mkswap /swapfile
  1. 激活这个swap文件:
   sudo swapon /swapfile
  1. 检查是否生效:
   swapon --show
   free -h

如果看到刚才的/swapfile出现在列表中,说明扩容成功。

开机自动挂载(避免重启后失效)

修改/etc/fstab文件,让系统每次启动自动加载swap文件。
用文本编辑器打开该文件:

sudo nano /etc/fstab

在文件末尾添加一行:

/swapfile none swap sw 0 0

保存退出。
这样重启后swap依然生效。

常见避坑点

  • 不要使用磁盘空间不足的目录:如果根目录容量紧张,可以考虑在数据盘目录下创建swap文件,但注意性能差异。
  • swap文件大小不宜过大:一般不超过物理内存的2倍,超过8GB会造成磁盘IO过度。如果物理内存已很大(比如32GB),扩展swap意义不大,建议排查应用内存泄漏。
  • 优先级设置:如果有多个swap来源(比如既有分区又有文件),可以通过swapon -p设置优先级,值越高优先使用。
  • OOM问题可能不是swap能完全解决:swap只是临时缓解,如果应用程序持续消耗大量内存,仍需优化代码或增加物理内存。

验证扩容效果

执行free -h查看swap total是否为你设置的大小。
你还可以手动触发一次内存压力测试(仅测试环境):

sudo stress --vm 2 --vm-bytes 2G --vm-hang 5

观察htopfree,看swap使用量是否上升,系统是否有OOM报错。
如果没有报错,说明扩容生效。
线上环境不建议运行压力测试,请直接观察业务运行情况。

如果遇到“swapon failed: Operation not permitted”,请检查是否以root用户执行,或确认SELinux是否拦截。临时关SELinux测试:sudo setenforce 0,如果恢复正常,需要为swap文件添加安全上下文。

至此,你已经成功为服务器扩容了swap分区,OOM Killer应该不会再频繁叫醒你了。
如果问题依然存在,建议结合dmesg | tail -20查看具体是哪个进程引起的内存溢出,从应用层面做进一步优化。

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

机房迁移升级通知

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