Skip to content

站点bundle内存有界诊断 ​

已知事实与诊断问题 ​

当前28/66,中断1Hz已限定E4验收,仍处于该指标交付闭环,磁盘未开始。前一Git查询修复已证真实Git峰4并发,但新整站构建聚合RSS1,650,884,608B超1536MiB,5.157秒终止;该失败保留,不重放。完整Mermaid、Three、MathJax、本地搜索与Markdown编译均只是待区分的内存贡献,不能凭依赖大小认定根因。

本次定稿:仅诊断,不改功能 ​

使用锁定VitePress1.6.4的build入口及onAfterConfigResolve,将只读统计插件注入内存配置;不修改node_modules、主题、依赖锁、正文、搜索、公式、图类型或归档。一次新独占诊断,Node24.19.0/old-space1024MiB、聚合1536MiB、最多32进程、180秒保持。峰值触门即一次SIGTERM,12秒后才允许一次SIGKILL。失败与部分输出保留,不能当网站构建通过。

记录客户端/服务端阶段、插件transform调用/完成/在途数及源字节、模块解析类别、Node内存、各子进程RSS和名称。每200ms取一次轻量内存快照、阶段变化另记;在途集合最多4096项、日志最多1MiB,超限停止诊断。不做堆快照、不强制GC、不输出完整源码。统计为O(模块数),每次事件O(1),每采样按固定插件数/最多32进程处理;预计复现≤15秒,最坏180秒。额外记录本身不能作为原始构建的精确峰值对照;不将本次较高/较低RSS直接归因于某依赖。

诊断产物仅私有目录,源/锁SHA前后核同,空间先查。若能定位明确机制,再另文档化最小修复和匹配验证;不能据此反复试堆、放宽预算、删页面或提前进入下一指标。Cloudflare与Webhook本机配置缺口沿用既有记录,不要求把秘密发到聊天。

Validation Update · 2026-10-19 ​

一次诊断6.725秒/CPU19.138秒,聚合1,613,725,696B触原1536MiB门,一次SIGTERM,无强杀;源1192文件/21,080,720B核同。峰值时Node1,571,340,288B、esbuild30,294,016B和两Git共12,091,392B;峰进程6(Node1/esbuild1/Git4)。180,236B私有日志未触统计门。客户端transform阶段已见564个Markdown同时在途,完成411个时尚有153个;Mermaid类98、Three类9、其他2241已解析模块。本统计按路径分类,其他中含依赖,不能把98当Mermaid完整传递依赖规模;也不能从相关时序断言唯一内存原因。无renderStart/SSR/整站通过证据。

状态partial;该诊断不执行prebuild、不是常规构建吞吐基准。下一先独立验证锁定Mermaid预构建浏览器分发文件能否减少重新解析的图规模;原全部失败与旧dist保留。

Allocation Diagnostic Plan · 2026-10-19 ​

前述两功能路线未通过后,不继续猜测。一次新私有低频V8分配采样:使用内置inspector HeapProfiler.startSampling,间隔512KiB,不取对象值/字符串/完整堆,只取保留分配的函数调用树和字节。锁定同Node/堆/1536MiB/32进程/180秒;SIGTERM时先stopSampling写≤1MiB私有调用树并退出143,若不退出仍由12秒守卫强杀。记录器额外内存预计≤8MiB,文件超1MiB拒绝保存;只定位主要分配路径,不把采样视为准确总堆或常规构建基准。不改源/锁/预算,不向外发送原始证据。根据结果决定下一方案,未定位则保持partial。

Sampling Tool Recovery · 2026-10-19 ​

a08在7.340秒、聚合1,657,700,352B触门并exit143,一次SIGTERM/无强杀;源稳定,但未产生采样文件,不能据此归因。原采样器finally中的exit遮蔽了写出错误,现记录工具失败,不称已有分配证据。先以小型受控分配验证改进:采样结果仅聚合selfSize调用帧前128项及最大32栈,不保留庞大完整树/samples,生成器错误明确写stderr;摘要≤1MiB。控制通过后允许一次新独占诊断,同资源预算,不重用a08目录。完整树未落盘不伪称已保全该原始树;a08源码/日志/失败收据继续保留。

Allocation Result · 2026-10-19 ​

小控制实际100,000对象,采样保留24,863,336B,摘要成功。a09新诊断7.452秒/CPU18.226秒、聚合1,709,473,792B触原门,exit143/SIGTERM一次、无强杀;1196源文件/21,095,551B稳定。成功保存低频摘要:采样保留550,504,864B、4495调用树节点;主要单栈为本地搜索MiniSearch.add的Map97,005,496B及set21,218,184B,另有搜索section split10,496,944B;Rollup转换/拼接与esbuild响应解码也保留较大字符串(摘要不是精确总堆)。停止采样后heapUsed582,738,656B、heapTotal745,537,536B、RSS1,385,742,336B;它们不是触门瞬间或聚合RSS。未发现足以认定MathJax是主因的采样证据。

锁定源码证实本地索引先JSON.stringify成JSON字符串,再JSON.stringify成JS字面量;该大字面量继续进入Rollup与esbuild。下一方案应保留完整索引语义,将索引字节作为静态JSON资产提供,避免为数据建立/压缩JS AST;不是排除文档、删搜索或改分词。

Isolation Update · 2026-10-19 ​

候选未完成整站构建与浏览器门,隔离审计分支codex/site-memory-diagnostic-20261019,main仅保留记录,不启用本页候选改动。最终失败与恢复边界见最终记录。

Perfowl · Performance Observer