
GitNexus worker 提示 did not report ready within 5000ms 怎么排查启动预算与弹性参数【免费下载链接】GitNexusGitNexus: The Zero-Server Code Intelligence Engine - GitNexus is a client-side knowledge graph creator that runs entirely in your browser. Drop in a git repository (Github, Gitlab, Azure, Local) or ZIP file, and get an interactive knowledge graph with a built in Graph RAG Agent. Perfect for code exploration项目地址: https://gitcode.com/GitHub_Trending/gi/GitNexus在仓库里执行gitnexus analyze时如果输出里出现Replacement worker did not report ready within 5000ms或Worker N did not report ready after N attempt(s); dropping slot说明解析 worker 没有在规定的时间预算内完成启动握手。这类提示既可能只是慢机器上整池并发冷启动来不及也可能是大仓库上内存压力把健康的 worker 饿死——两种情况的处理路径完全不同。本文说明如何从报错信息本身读出原因给出对应的启动预算参数GITNEXUS_WORKER_READY_TIMEOUT_MS与池弹性参数的调法以及改完后的验证方式。前提是你已经能用 GitNexus CLInpm install -g gitnexus安装并对某个仓库发起analyze。这个错误到底在说什么GitNexus 的 worker 池是唯一解析路径没有顺序解析模式0个 worker 会被拒绝。每个新启动的 worker 必须先加载自己的 grammar 绑定然后向父进程上报{type:ready}握手消息槽位才算可派发任务。池子用一个等待函数盯着这个握手收到ready即通过超时则把这个槽位当作启动崩溃处理实现见 worker-pool.ts。默认预算就是报错里的5000ms。触发超时时错误消息本身会带两条线索Replacement worker did not report ready within 5000ms — likely crashed during top-of-script init (slow host? raise GITNEXUS_WORKER_READY_TIMEOUT_MS; repeated on a large repo? likely main-thread memory pressure ...)——消息直接给出两个方向慢主机上调启动预算大仓库上重复出现则多半是内存压力。如果捕获到了 worker 的 stderr消息尾部会追加Worker stderr:和最多 4000 字符的日志尾部。native 绑定加载失败、脚本顶层抛异常的真实堆栈就在这里而不是被笼统的 did not report ready 盖住。先分清它和worker 解析超时不是一回事解析空闲超时GITNEXUS_WORKER_SUB_BATCH_TIMEOUT_MS默认 30000ms针对的是 worker 已经就绪后的解析作业是可恢复的——池子会退避重试、拆分大作业、隔离反复崩溃的文件analyze继续跑并安全回退。did not report ready只覆盖启动窗口不覆盖解析耗时。第一步先读错误里附带的真实原因拿到报错后按这个顺序判断不要直接改参数看有没有Worker stderr:段落。有堆栈就说明 worker 在启动阶段真实崩了grammar/native 绑定加载失败、脚本顶层异常、exit带非 0 码、或 V8 反序列化失败。这种即使调大启动预算也解决不了要按堆栈里的原因处理例如缺失的 native 绑定。看出现模式。单次、出现在慢机器或高负载主机上整个池并发冷启动超过 5 秒——走下一步上调启动预算。看是否在大仓库上反复出现。gitnexus/README.md 的 “Analysis runs out of memory” 一节明确写了大仓库上反复出现Replacement worker did not report ready within 5000ms是同一幅画面的一部分——内存压力饿死了健康 worker而不是 worker 本身的 bugissue #2649。这种情况跳到下面的内存处理小节。慢主机上调启动预算GITNEXUS_WORKER_READY_TIMEOUT_MS控制解析 worker 加载 grammar 绑定并上报ready的启动预算毫秒缺省5000超时的槽位按启动崩溃处理。官方给出的适用场景就是慢或重载主机上整池并发冷启动需要 5 秒以上analyze以did not report ready within 5000ms中止见 根 README 环境变量表。参数优先级是 CLI 标志 环境变量 内置默认这一项没有对应的 CLI 标志用环境变量形式。值按你主机的冷启动耗时设定单位毫秒必须大于 5000 才有效# milliseconds 替换为你主机需要的启动预算毫秒文档未指定具体值按冷启动耗时自定 export GITNEXUS_WORKER_READY_TIMEOUT_MSmilliseconds npx gitnexus analyze如果 GitNexus 是从长驻宿主MCP server、eval-server、CI shell里被调用的把变量设在该宿主自己的环境里一次性对所有运行生效。大仓库反复出现先处理内存压力当报错在大仓库上反复出现时按 gitnexus/README.md 的处理路径走环境里钉了堆上限如果 shell 里通过NODE_OPTIONS --max-old-space-size钉了堆大小它会压低analyze的自动堆管理——去掉钉值重跑即可不需要任何 GitNexus 标志。机器就是上限缩小索引范围或用内存更大的机器。缩小范围用.gitnexusignore本仓库生效或 git 自身的排除文件全局/本仓库无需改动仓库文件即可生效# 本仓库排除 echo vendor/ .gitnexusignore echo dist/ .gitnexusignore # 全局排除对每个被索引仓库生效文档示例 git config --global core.excludesFile ~/.gitignore_global echo docs/ ~/.gitignore_global echo build/ .git/info/exclude或按文档给出的大仓库示例直接加大 Node 堆示例值来自文档按机器实际内存调整NODE_OPTIONS--max-old-space-size16384 npx gitnexus analyze手动控制内存的逃生舱文档说多数用户用不到只在你想自己驱动内存时再碰GITNEXUS_MEMORYoff拒绝 GitNexus 的内存自动管理不再自动重跑加堆上限、也不会在 V8 进入低效 mark-compact 死循环前中止解析GITNEXUS_WORKER_HEAP_MB手动设定每个 worker 的老生代堆上限默认clamp(512, RAM/2/poolSize, 4096)按机器内存与池大小计算。还有一个相关信号池总堆提交超过进程可用内存 60% 时analyze会打印Worker pool may overcommit memory: ... Reduce GITNEXUS_WORKER_POOL_SIZE or set GITNEXUS_WORKER_HEAP_MB。此时按提示降GITNEXUS_WORKER_POOL_SIZE默认cores - 1上限 160被拒绝没有顺序模式排查 worker 崩溃时设1而不是0或设GITNEXUS_WORKER_HEAP_MB。池弹性参数哪些情况才需要动did not report ready之后的连锁反应由一组弹性参数兜底默认值就是为普通仓库调好的见 gitnexus/README.md “Worker pool resilience tuning”变量默认作用GITNEXUS_WORKER_READY_TIMEOUT_MS5000worker 启动握手预算毫秒超时的槽位按启动崩溃处理GITNEXUS_WORKER_MAX_RESPAWNS_PER_SLOT3每个槽位被逐出轮换前的最大替换启动次数GITNEXUS_WORKER_MAX_CUMULATIVE_TIMEOUT_MS5 × subBatchTimeoutMs每个作业的总重试墙钟预算超限则隔离该作业GITNEXUS_WORKER_CONSECUTIVE_FAILURE_THRESHOLDmax(3, poolSize)单槽连续死亡次数达到后熔断之后所有派发被拒直到新池创建GITNEXUS_WORKER_SHUTDOWN_DRAIN_MS30000池关闭时等待仍在 native 代码里 worker 退出的最长时间GITNEXUS_MEMORY未设autopilot 开off时拒绝内存自动管理GITNEXUS_WORKER_HEAP_MBclamp(512, RAM/2/poolSize, 4096)每 worker V8 老生代堆上限文档的口径是当analyze确实需要更多重试时上调或在已知坏形态上想快速失败时下调。也就是说调大GITNEXUS_WORKER_READY_TIMEOUT_MS是慢主机的主路径修复其余参数只在你要容忍更多重试或希望更快失败时才需要动。单个槽位耗尽替换预算被逐出后池子靠隔离 重生继续用剩余 worker 跑但如果你看到反复的 ready 失败说明要回到前两个分支处理根因而不是继续加预算。验证与限制改完重跑npx gitnexus analyze不再出现did not report ready提示且分析正常完成即说明问题解决。如果调大启动预算后仍失败且报错带Worker stderr:真实堆栈——worker 是启动阶段真实崩溃grammar/native 绑定问题内存路径救不了它反过来堆栈干净、只是慢再考虑继续上调预算。如果熔断器GITNEXUS_WORKER_CONSECUTIVE_FAILURE_THRESHOLD已触发本次analyze内后续派发全部被拒需要等一次新的池创建即重新发起运行。边界再强调一次GITNEXUS_WORKER_READY_TIMEOUT_MS只管启动窗口。慢文件解析超时是另一条线用--worker-timeout 60或GITNEXUS_WORKER_SUB_BATCH_TIMEOUT_MS60000处理两者不要混用。【免费下载链接】GitNexusGitNexus: The Zero-Server Code Intelligence Engine - GitNexus is a client-side knowledge graph creator that runs entirely in your browser. Drop in a git repository (Github, Gitlab, Azure, Local) or ZIP file, and get an interactive knowledge graph with a built in Graph RAG Agent. Perfect for code exploration项目地址: https://gitcode.com/GitHub_Trending/gi/GitNexus创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考