OpenClaw 升级后报错、告警、变慢?五个问题的排查与处理

9.6 发布后,我把 GitHub 上评论最多的几条 issue 翻出来,对照自己 9.4 升 9.6 的环境逐个排查。下面五个问题都附了排查命令和判断标准,每节结尾都写了「什么时候不用管」——升级后大部分告警属于后者。

一、插件升级报 runtime application failed

症状:openclaw plugins update <id> 报 Plugin updates were saved but runtime application failed,接着 plugins reload 报 not tracked package install,点几次都没反应。社区 Update failure 开头的 issue 在 9.4/9.5/9.6 各有数条。

判断:先跑 openclaw plugins list。如果版本号已经是新版、状态 enabled,说明磁盘上的插件已经换新,只是运行时没跟上——这是升级期的加载毛刺,不是升级失败。

处理:重启容器,不要反复 reload。reload 本身就在报错,继续点没意义;重启后 plugins list 确认版本与状态即可。

不用管的情况:重启后版本对齐、状态正常,之前那条报错就是历史记录,不影响运行。

二、日志刷 memory pressure 告警

症状:日志每几分钟出一条 memory pressure: level=warning reason=rss_threshold,看着像内存泄漏。

先看 level,这决定要不要动手:

再看走势,不看单点:

grep -o 'rss=[0-9.]* GiB' /tmp/openclaw/openclaw-$(date +%F).log | uniq

数值来回波动、每小时回落,说明是围绕阈值震荡,不是泄漏;单调上涨、几小时翻倍,才是社区 #154812 那类问题,按该 issue 的 workaround 处理(加 swap、设 cgroup 上限)。

阈值是怎么来的(源码 resolveThresholds):基础值 DEFAULT_RSS_WARNING_BYTES = 1536 MB,配置文件里没有对应配置项;给网关配了 --max-old-space-size 之后,阈值会按堆上限的比例抬高。稳态 RSS 由 V8 堆 + worker 堆 + native 开销构成,我实测在 1.5–1.6 GiB,刚好压在 1.5 GiB 这条线上,所以每 5 分钟采样必然破一次——这是阈值贴着稳态,不是泄漏。

处理:warning 档不用管。真要让日志清净,给 docker-compose 的网关 command 加 --max-old-space-size=2048,阈值随之抬高,代价是改配置加重启。

不用管的情况:只要还是 warning、走势不单调上涨,就放着。我全天 66 条告警,离 critical 还有约 1 GiB 余量,一次实际动作都没触发。

三、升级当天 ERROR 突然涨到几十条

症状:升级前日志 ERROR 为 0,升级当天几十条。

先分类,别急着当故障:

grep '"logLevelName":"ERROR"' /tmp/openclaw/openclaw-$(date +%F).log | \
  grep -oE 'No supported service manager|runtime application failed|prepared-model|lane task aborted|tool_call failed' | \
  sort | uniq -c

判断标准:

处理:跑上面的分类命令,确认是哪类再决定。我这次 82 条里真正要动手的只有 6 条,重启后解决。

不用管的情况:分类后如果全是提示类和偶发类,数量再多也只是噪音。

四、升级后定时任务不跑(会话模型指向旧渠道)

症状:升级后一切正常,几天后发现某个定时任务没执行,或者模型调用报认证失败。

排查:

openclaw status

看 Model selection 段有没有会话的模型指向不在默认值上。我这次查出三个:一个定时任务钉在已停用的火山渠道,一个钉在即将下线的版本,主会话也是。

为什么会这样:升级/迁移时会话级的模型覆盖(session override)被保留成历史值,配置文件里的默认模型早就改了,两边不同步。

处理:通过 sessions 工具的 patch 动作逐个改回默认模型(openclaw sessions 命令行没有 patch 子命令)。

为什么必须查:这个问题平时不报错——主会话用着正常,定时任务要到下次运行才失败,可能过几天才发现。升完跑一次 openclaw status 是六步核查里最容易漏的一步。

不用管的情况:没有。这一项必须查,它不报错,漏了就是定时任务静默失败。

五、升级后感觉变慢了

判断方法:拿自己升级前的基线比,不要只看社区个案。

自己测:

grep 'model-fetch] response' /tmp/openclaw/openclaw-$(date +%F).log | grep -oE 'elapsedMs=[0-9]+'

统计中位数,跟升级前的记录对比,差 10% 以内算正常。

顺带确认三个性能配置还在不在(这三项从 9.3 起就是性能关键,升级理论上不动,但值得扫一眼):sessionObserver: false、不配 cacheRetention、fastModeDefault: true。

不用管的情况:差距在 10% 以内、三个配置都在,就是正常波动,不用查社区个案。

升级完成后遇到异常,可以按下面的流程先判断该不该动手:

升级后问题排查决策流程

小结

症状排查处理
插件报 runtime application failedopenclaw plugins list 看版本是否已换新重启容器,别反复 reload
memory pressure 刷屏看是 warning 还是 critical、走势是否单向上涨warning 不用管;critical 或单向上涨才动手
ERROR 涨到几十条分类统计,看是提示还是真故障提示划掉,真故障逐个处理
定时任务不跑openclaw status 查会话模型钉扎patch 回默认模型
变慢了对比自己升级前的中位数基线差 10% 内正常,超了再查三个性能配置

升级本身的风险主要在升级路径上,升完稳定运行后,真正影响体验的往往是这几件不查不知道的小事。社区的 issue 列表可以当检查参考,逐项对一遍,比等它出事再排查省事。

← 返回文章列表