🦞 OpenClaw 低内存更新黄金标准 (SOP)

第一阶段:战前动员(防杀准备)

在运行更新脚本前,先给服务器穿上“防弹衣”,防止内核 OOM Killer 暴力拆迁。

Bash

# 1. 创建 4GB 临时补给(Swap)
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# 2. 开启内核“宽容模式” (允许超量申请内存)
sudo sysctl vm.overcommit_memory=1

# 3. 注入 npm 全局限速(持久化限制,防止脚本内部溢出)
npm config set max-old-space-size 1024

第二阶段:执行更新

直接运行官方脚本,此时系统有足够的缓冲区来应对 sharp 等模块的编译压力。

Bash

# 建议在执行前先清理一下系统缓存
sudo sync; echo 3 | sudo tee /proc/sys/vm/drop_caches

# 运行更新脚本
curl -fsSL https://openclaw.ai/install.sh | bash

PM 提醒:如果进度条卡住,观察宝塔面板的 磁盘 IO。只要有红色起伏,就证明它在利用 Swap 慢速爬行,千万不要 Ctrl+C,耐心等 5-10 分钟。

第三阶段:战后拆迁(恢复生产)

更新成功后,必须把这些临时配置撤掉,否则会拖慢系统响应并浪费硬盘。

Bash

# 1. 还原内核策略
sudo sysctl vm.overcommit_memory=0

# 2. 删除 npm 内存限制
npm config delete max-old-space-size

# 3. 卸载并删除 Swap 文件
sudo swapoff /swapfile
sudo rm -f /swapfile

# 4. 重启服务
systemctl --user restart openclaw-gateway.service

💡 为什么这套操作是“最优解”?

  1. Swap (4G+):解决了“空间不够”的问题。npm 编译重型依赖时,物理内存放不下的数据可以暂时“躺”在硬盘里。

  2. Overcommit=1:解决了“内核太敏感”的问题。防止 Linux 因为看到进程申请了 4G 内存(即便有 Swap)就提前扣动扳机。

  3. npm config:解决了“环境变量失效”的问题。有些脚本会启动子进程,导致 export 失效,修改全局配置能确保“紧箍咒”一直跟着 Node.js。