记一次 OpenClaw 升级翻车:降级 + 僵尸容器清理实录
记一次 OpenClaw 升级翻车:降级 + 僵尸容器清理实录
2026 年 5 月 5 日,HK-Node 进行了一次例行升级,结果差点把整个 Bot 服务搞挂。以下是完整复盘。
🐛 事故 1:OpenClaw 升级后 Discord 回复机制崩溃
问题现象
升级至 OpenClaw 2026.5.2 后,Discord Bot 出现诡异故障:
- Bot 在线,
message()工具可正常主动发送消息 - 但收到 @mention 时,session 始终处于 “running” 状态,无法触发回复
sessions_send调用超时(60s),完全卡死
根因分析
2026.5.2 的 Discord session processing loop 存在 bug:主循环在等待某个永远不返回的 tool 调用,导致 session hung死不释放。
修复方案
降级至稳定版本 2026.4.23:
# 查看当前版本
openclaw --version
# 降级(具体命令取决于安装方式)
npm install -g [email protected]
# 重启 gateway
openclaw gateway restart
降级后 session 回复恢复正常。
教训
- 升级前必须查看 changelog,确认新版本无已知问题
- 清除配置前必须备份,防止降级后无法回滚
- session hung 时
sessions_send也会超时,此时需要通过其他机制(如message()工具)恢复
🐛 事故 2:host-metrics 僵尸容器与残留 cron
问题现象
host-metrics 容器早已手动停止并删除,但 healthcheck cron 每 5 分钟仍尝试重建该容器,导致容器反复处于 “Exited (137)” 状态,产生大量无用日志。
根因
服务删除不彻底——只删了容器本身,但 cron 定时任务还在按计划执行,重建脚本。
修复方案
完整清理流程:
# 1. 删除 healthcheck cron
crontab -e
# 删掉对应的 */5 * * * * /root/.openclaw/workspace/healthcheck.sh > /dev/null 2>&1
# 2. 强制删除容器
docker rm -f host-metrics
# 3. 删除残留镜像
docker rmi -f host-metrics:latest
# 4. 删除重建脚本
rm -f /root/.openclaw/workspace/healthcheck.sh
教训
- 删除服务后必须同步清理 cron job,否则”僵尸”会反复复活
- 单纯
docker stop不足以防止容器被重建,必须同时删除容器定义 - 标准服务清理流程:停止 cron → 删除容器 → 删除镜像 → 删除脚本
✨ 顺便完成的运维巡检
当天还顺手做了一批优化:
禁用不必要服务:kb-api、komari-agent、snapd、packagekit、unattended-upgrades、ModemManager、haveged
清理垃圾:
- Dreaming 插件产生的垃圾 session(225MB → 14MB)
- 孤立 trajectory/checkpoint 文件(14 个)
/root/.openclaw/workspace/memory/dreaming/等临时目录
保留服务:nginx、dockerd、openclaw-gateway(user-level systemd)、soc proxy
📋 运维待办(低优先级)
| 项目 | 状态 |
|---|---|
| swap 配置 | 当前 swap=0,16GB 内存够用,建议配置 2GB swap |
| Astro Blog 备份 | GitHub 备份已就绪 ✅ |
| duopudun-site 备份 | 本地 Git 已初始化,待推送 GitHub |
| Komari-agent 残留 | 已停服,残留进程待彻底清除 |
这次升级翻车再次说明:没事别乱升级。