2.8 KiB
2.8 KiB
ccweb 频繁掉线诊断进度
- 2026-07-11:开始只读诊断,已确认不执行重启或配置修改。
- 2026-07-11 22:29:完成当前状态采样;发现 ccweb 刚在约 22:25:49 重启,PM2 累计重启 60 次。
- 2026-07-11 22:34:完成 PM2 与应用日志初查;本次为外部触发的正常 SIGINT 重启,不是异常崩溃。
- 2026-07-11 22:39:排除 watch、cron、PM2 内存阈值、内核 OOM 和端口故障;未发现自动重启脚本或定时任务。
- 2026-07-11 22:43:统计 7 月以来 19 次均为 SIGINT/0 的主动重启;历史会话记录证实开发代理曾显式执行重启命令。
- 2026-07-11 22:46:完成一分钟窗口会话审计与结论归纳;本轮未重启、未修改服务配置或业务代码。
- 2026-07-11:用户澄清重启是故障后的人工恢复;已撤回“主动重启导致本次掉线”的因果判断,开始追查重启前无响应。
- 2026-07-11:确认历史可观测数据不足以直接还原旧进程状态;代码索引可用,进入阻塞路径分析。
- 2026-07-11:发现主线程同步日志、同步会话扫描/解析、同步附件处理和 WebSocket 大对象序列化等阻塞候选。
- 2026-07-11:函数级调用面确认同步日志、全量会话列表和统一 WebSocket 序列化均处于高扇入路径。
- 2026-07-11:核对会话体积阈值;初次常见目录检索未发现结构化 process.log,继续确认运行数据目录。
- 2026-07-11:确认 112 个会话共 64 MiB,同步会话扫描一次约 5.99 秒;发现日志在故障前约 1 分 48 秒轮转。
- 2026-07-11:故障窗口确认 1089 条未路由通知风暴,991 条为 agentMessage delta;每条都会同步写日志。
- 2026-07-11:thread 归因到活跃 English 会话;热缓存会话扫描约 188–243 ms,修正此前 5.99 秒的过度归因。
- 2026-07-11:确认 thread 自 22:13:44 创建起即未成功建立路由,直到 22:25:49 重启;排除路由查找本身的复杂度问题。
- 2026-07-11:确认未路由认领依赖持久化 threadId 与 adoptable 方法;故障期间从未认领成功,竞态/worker 注册遗漏成为首要代码缺陷候选。
- 2026-07-11:定位高频 delta 的全量同步会话扫描放大器;估算故障窗口产生约 63 GiB 读取/解析压力,能够解释整站无响应。
- 2026-07-11:精确确认 loadSession 为完整同步读取/解析;miss 基准 604–840 ms,累计阻塞时间与整个故障窗口同量级,根因达到高置信。
- 2026-07-11:确认故障 thread 是原生 spawn_agent 子代理;定位 child 映射注册缺口与错误回退到父会话全量扫描的完整因果链。
- 2026-07-11 22:45:复核重启后无 adoptable 未路由风暴,服务 HTTP 200/约 2.5 ms;完成修正后的最终结论。本轮未改业务代码、未改配置、未重启。