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 变量可以按需改为 4G、8G 等;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
系统公告

泽御云中秋国庆双节活动上线:新购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 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意