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

服务器跑着跑着突然出现 OOM(Out Of Memory)报错,服务直接挂掉,对新手来说非常棘手。
除了升级物理内存,扩容 swap 分区 是最快的替代方案。
本文提供一个一键扩容脚本,只需复制粘贴执行,就能自动完成 swap 文件创建、挂载和生效,全程无需手动计算参数,特别适合零基础运维。

检查当前 swap 状态

在跑脚本之前,先确认服务器当前 swap 情况。
登录服务器执行:

free -h | grep -i swap

如果显示 total 为 0 或很小(比如 1G 以下),就说明 swap 容量不足。
同时用 df -h / 查看根分区剩余磁盘空间,最好有 5G 以上空闲 用于新建 swap 文件。

一键扩容脚本(直接复制即可)

创建一个脚本文件 expand_swap.sh,输入以下内容:

#!/bin/bash
# swap 一键扩容脚本,默认扩容 2G,可按需修改 SIZE

SIZE=2G
SWAPFILE=/swapfile2

# 检查是否已有 swap 文件(避免重复创建)
if [ -f $SWAPFILE ]; then
    echo "⚠️ $SWAPFILE 已存在,请先移除或改用其他文件名"
    exit 1
fi

# 创建指定大小的 swap 文件
fallocate -l $SIZE $SWAPFILE
chmod 600 $SWAPFILE
mkswap $SWAPFILE
swapon $SWAPFILE

# 永久生效:写入 /etc/fstab
grep -q "$SWAPFILE swap swap defaults 0 0" /etc/fstab || echo "$SWAPFILE swap swap defaults 0 0" >> /etc/fstab

echo "✅ swap 已扩容,当前大小:"
free -h | grep Swap
说明SIZE 变量可以按需改为 4G8G 等;SWAPFILE 路径可更换,但建议放在根目录。

赋予执行权限并运行:

chmod +x expand_swap.sh
sudo bash expand_swap.sh

如果看到 ✅ swap 已扩容,当前大小:Swap: 2.0G … 就表示成功了。

避坑指南(新手必看)

  • 不要用 dd 命令创建文件:老旧教程用 dd if=/dev/zero …,性能差且可能卡住 IO。推荐使用 fallocate(如果系统支持)。
  • swap 文件不要放在 SSD 上作为主要补丁:频繁写入 swap 会加速 SSD 磨损,仅作临时救急。长期 OOM 还是建议加物理内存或优化应用。
  • 大小不能超过磁盘空闲:比如磁盘只剩 3G,你却设 SIZE=4G 会报错 fallocate 失败,此时删减到可接受范围。
  • 多版本 swap 文件冲突:如果之前已有一个 swapfile(如 /swapfile),脚本新建 /swapfile2 会新增一个 swap 分区,不会覆盖旧的。可以通过 swapon --show 查看全部启用中的 swap。
  • 需要 root 权限:所有命令都要 sudo 或以 root 身份执行。

效果验证与后续建议

执行完脚本后,用 free -h 看 Swap 行,使用量如果从 0 变为部分占用,说明系统已经开始利用 swap。
可以重启占用内存的服务(如 MySQL、Nginx)观察 OOM 日志是否消失。

验证 OOM 是否彻底缓解,建议临时开启 oom_score_adj 调整优先级,或者将关键进程设为不可被 OOM Killer 杀死(需谨慎)。
但更根本的做法是:利用监控工具(如 htop、nmon)找出内存占用异常的进程,针对性优化代码或配置。

常见问题(FAQ)

Q:扩容后需要重启服务器吗?
A:不需要,swapon 命令即时生效,无需重启。重启后 /etc/fstab 也会自动挂载。

Q:我想扩容 8G,但磁盘只剩 6G 怎么办?
A:可以分两步:先删除不用的日志或临时文件腾出空间,再减小 SIZE 到 4G 或 6G,确保不爆盘。

Q:swap 扩容会影响性能吗?
A:swap 本质是硬盘模拟内存,速度远慢于 RAM。大量使用 swap 会导致系统变慢,但只要不频繁读写,作为应急手段是完全可接受的。

如果你已经跑完脚本,建议继续排查 dmesg | grep -i oom 确认是否还有内存溢出的残留错误。
把 swap 扩容当作短期缓解方案,长期仍需升级物理内存或优化业务

分享到:
上一篇
从零搭建CVE高危漏洞定期自动扫描服务器巡检脚本
下一篇
宝塔面板一键迁移多站点完整数据不丢失的实操步骤
1
系统公告

机房迁移升级通知

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