[Bug] 巨型会话家族(主会话+51个子代理,342MB zstd)全量载入导致 dsh web V8 堆 OOM 崩溃(含完整 GC 曲线) #5165
baka-world
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
环境:dsh 0.1.0-rc.6(
dsh web),Ubuntu 26.04.1,Node v24.20.0,16 GB RAM 笔记本。现象:
dsh web服务进程被 V8 堆 OOM 杀死(FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory,SIGABRT)。8/26–8/31 期间至少 5 次(系统 apport 有多次nodeSIGABRT 记录),均发生在正常使用会话期间。完整 GC 曲线(
node --trace-gc全程记录,崩溃前最后一段)末段 8 次 full GC 均为
Mark-Compact (reduce),每次仅回收 ~10 MB,GC 效率 mu 从 0.79 崩到 0.16——4 GB 全部是活对象,不是碎片。崩溃栈(各次一致的终点):
数据量化(根因)
崩溃时正在使用的会话家族体量:
session-42dbbcf7:44 MB zstd,解压 147 MB JSON,637,182 个事件、754 次 request;origin: "subagent",parentSession指向主会话),共 298 MB zstd,单个 5–14 MB,每个携带 ~950 KB 继承上下文种子(seedLength);死亡时刻(10:10–10:11)三个工作区的大会话同时活跃写入,约 100 秒后进程死亡。
可重复性:8/28 曾出现一次"未遂"——堆被推到 3.9 GB 后进入平台期(swap 扛住),随会话结束释放回 1 GB;8/31 第二次爬坡直接撞墙。模式确定,非偶发。
已排除(带对照组的复现测试)
与 #131 / #238 的关系
建议
如需要,我可以提供 6.8 万条完整 trace-gc 记录、apport 元数据或会话家族的文件清单。
All reactions