19 lines
2.4 KiB
Markdown
19 lines
2.4 KiB
Markdown
# 排查发现
|
||
|
||
- 线上已使用 GET /api/sessions/:id,HTTP读取不等待WebSocket。
|
||
- 缓存分为完整新鲜、完整过期和未命中;运行中的会话不能使用完整新鲜缓存直出。
|
||
- 首屏读取12条、后续24条;首屏附带完整运行正文和工具调用快照。
|
||
- 完成快照后,浏览器才订阅实时更新;订阅修订变化会触发后台HTTP对账。
|
||
- 2026-10-18最近业务查询记录200、服务端执行为毫秒级;该计时不覆盖进入处理函数前等待、传输、浏览器解析与显示。
|
||
- 工作区已有图片显示及文件浏览器等未提交修改,必须保留。
|
||
- 真实归档隔离副本首屏实测:常用会话约805KB/122个工具,另一会话1.21MB/143个工具,最大副本6.31MB/311个工具;普通本机Firefox切换约0.4~1.5秒,未复现45秒超时。
|
||
- 实际工具结果占主要体积,最大单条工具输出约1MB;闭合的工具details仍立即构造完整输出DOM,最大副本出现约1秒主线程停顿。
|
||
- 正在受控传输夹具下复现完整工具输出绑在首屏导致的45秒请求超时;不据此断言现场网络有故障。
|
||
- 2026-10-19线上请求02:27:06发出,02:28:25才进入HTTP处理函数,处理本身39ms;8秒CPU采样的大部分样本落在parseJsonTopLevelSuffixFields,调用源为WebSocket的sendSessionList。
|
||
- 原算法对每个嵌套id/title候选复制并JSON.parse整个剩余后缀,近二次方成本与GC阻塞了所有HTTP请求。已改为从根结束符反向单次扫描,只解析完整顶层元数据。
|
||
- 列表改读归档loadMetadata,不读正文块、不因快照过期而同步重建;按归档修订及快照stat缓存列表字段,标题/未读变化立即失效。
|
||
- 128KB密集工具伪键只需14次JSON解析、约12ms;8份大旧快照刷新列表与HTTP读取并发回归通过。290份实际会话只读元数据探针无正文块读取和写盘。
|
||
- 线上重启后真实Firefox点击三个现有会话,分别352/430/184ms显示,当前运行正文恢复且工具详情完整。
|
||
- 追加并发刷新列表的连续9次真实点击,120~462ms全部显示,无浏览器错误;生产历史和未读未被测试修改(测试浏览器阻断实时订阅,另用鉴权WS只发list_sessions)。
|
||
- 290份实际会话元数据冷读1978ms;相同进程后续两次列表47/19ms,修订缓存避免每次重新解析清单。
|