swap分区一键扩容脚本缓解频繁OOM报错

服务器频繁出现 Out of Memory(OOM)报错,最直接的物理办法是加内存条,但如果暂时无法升级硬件,扩容 swap 分区(用磁盘空间模拟内存)能有效缓解进程被系统强制杀死的问题。
本文提供一份可直接复制执行的一键扩容脚本,并带你避开那些常见的坑。

先确认当前环境

在运行脚本之前,登录服务器并执行以下命令,确认现有 swap 和磁盘剩余空间:

free -h              # 查看内存和 swap 用量
df -h /              # 查看根分区剩余空间
swapon --show        # 查看当前 swap 设备或文件

如果根分区剩余空间小于 2G,建议换到其他分区(如 /home)创建 swap 文件。
以下步骤假设根分区有足够空间。

一键扩容脚本(直接复制使用)

将以下内容保存为 swap_expand.sh,然后赋予执行权限并运行:

#!/bin/bash
# swap 一键扩容脚本
# 默认增加 2G swap,可根据需要修改 SIZE 变量

SIZE="2G"
SWAPFILE="/swapfile"

echo "当前 swap 信息:"
swapon --show

echo "正在创建 ${SIZE} 的 swap 文件..."
fallocate -l $SIZE $SWAPFILE

if [ $? -ne 0 ]; then
    echo "fallocate 失败,尝试使用 dd 创建..."
    dd if=/dev/zero of=$SWAPFILE bs=1M count=2048
fi

chmod 600 $SWAPFILE
mkswap $SWAPFILE
swapon $SWAPFILE

echo "新增后的 swap 信息:"
free -h

运行步骤:

chmod +x swap_expand.sh
sudo ./swap_expand.sh

如果想让重启后自动挂载,把下面的内容追加到 /etc/fstab 文件尾部:

/swapfile none swap sw 0 0

避坑说明:这些错误你一定不想遇到

  • 文件系统不支持 fallocate:部分 XFS 或旧版系统 fallocate 可能失败,脚本已自动回退到 dd 创建,但 dd 创建速度较慢,耐心等待即可。
  • 权限设置错误:swap 文件权限必须是 600,否则 swapon 会拒绝加载,脚本已处理。
  • 磁盘空间不足:如果创建时提示“No space left”,请先清理日志或移动到其他分区。
  • SWAP 最大值限制:某些云服务器内核参数限制单个 swap 文件大小,如果超过 2G 请分段创建多个 swap 文件。

验证扩容是否生效

运行 free -h 查看 swap 行,检查 total 是否增加了 2G(或你指定的大小)。
同时观察系统日志:

sudo dmesg | tail -20 | grep -i oom

如果未来一段时间不再出现 OOM 相关日志,说明扩容成功缓解了问题。

常见问题 FAQ

Q:swap 能完全替代物理内存吗?
A:不能。swap 速度远慢于内存,只能作为临时内存不足的补充。如果持续 SWAP 占用高而不释放,建议考虑升级内存。

Q:扩容后 swap 文件可以删除吗?
A:可以,但要先运行 swapoff /swapfile 关闭,然后删除文件并从 /etc/fstab 中移除对应行。

Q:如何快速调整 swap 大小?
直接修改脚本中的 SIZE 变量重新运行即可,旧 swap 文件需先关闭再删除。但还是建议一次规划好大小,避免频繁调整。

如果你正在被 OOM 困扰,按本文步骤执行后通常能立即看到改善。
后续如果业务持续增长,建议结合监控工具(如 htop、nmon)定期评估内存使用,及时升级硬件才是根本解决方案。

分享到:
上一篇
CVE漏洞定期自动扫描服务器巡检脚本制作教程
下一篇
宝塔面板一键迁移多站点数据完整搬家
1
系统公告

机房迁移升级通知

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