服务端卡死诊断与恢复 · 2026-08-01

服务端卡死诊断与恢复 · 2026-08-01

用户贴出的日志(昨晚 00:15–00:34 旧进程)

三类信号:

  1. JiuwenSwarm 连 18092 失败 —— 噪音。该 Swarm 网关本机未启动,重试 10 次后放弃("BossAgents 独立运行中"),与影响图/演示无关。
  2. RuleDrift 权威规则对账 —— 信息性。本地 2516 / SCSAI 2386,本地独有 131(builtin-*)、SCSAI 独有 1(inspect-inst-g002)。可 node server/scripts/sync-rules-bidirectional.js --both 一次性对齐,非阻塞。
  3. EVENT LOOP STALLED ~232374ms(00:23:45→00:29:30)—— 真风险。事件循环被同步重活钉死 232 秒,期间服务能监听端口但无法响应(聊天会冻结 ~4 分钟)。

当前状态核查

  • 贴日志时:pid 8552 已卡死/api/health 超时,端口仍监听)。SCSAI 8732 当时不可达。
  • 进程体征:CPU 95s、工作集 748MB、3 个 CloseWait 连接、1 条外网 Established(ylxt.chat)。
  • crash.log 历史:EVENT LOOP STALLED 多次(07-31 还有 256s/292s),根因疑似 server 内置规则对账在 SCSAI 不可达时同步等待超时、钉死主线程。

处置

  1. 杀掉卡死 pid 8552(及残留),干净重启 → 新 pid 36012/api/health 200。
  2. 验证 SCSAI 8732 已恢复(21s 可达,临时掉线)。
  3. 验证影响图接口:/api/change/analyze 0460-2536 → success=true、impactChain 30 边、affectedParts=16/affectedBoms=15、truncated=false —— 演示链路活。

根因定位进展

  • [RuleDrift] 前缀在当前 server 源码中搜不到发射点(仅 sync-rules-bidirectional.js 的 usage doc 与 sqlite-compat.js 注释提及)。说明该日志来自旧版本进程或外部监控,非当前 server 直接打印。
  • sync-rules-bidirectional.js 自身有 SCSAI 连接自检,连不上即 process.exit(1)不会卡死,且未被 server 定时 require(引用检索仅命中自身)。
  • 嫌疑转向 boss-scheduler/lib/consistency-check.js(含 getSciotDb + 在 boss-scheduler 下,可能是周期性权威对账入口),待进一步读取确认。

待办

  • [ ] 读 boss-scheduler/lib/consistency-check.js,确认是否存在"SCSAI 不可达时同步阻塞"的对账任务。
  • [ ] 若确认:加硬超时 + SCSAI 不可达即跳过(不阻塞主线程);或给 server 加 STALL 自动重启看护。
  • [ ] 演示前可选跑 sync-rules-bidirectional.js --both 对齐规则计数。

结论

演示当前可用(服务已恢复、影响图验证通过)。唯一真实隐患是"SCSAI 不可达时定时对账可能再次钉死事件循环",需加固;否则下次 SCSAI 抖动演示会冻结数分钟。

← 返回案例列表
分享:
🤖 Try Now →
🤖
🎁