采样第二组对照:连「写大文件」也不是充分因(本轮写了 135KB+146KB,内存峰值仅 260MB 且被 GC 收回)⇒ 定性修正为「高振幅锯齿 + 回收时机随机」;三次观测并排入库
This commit is contained in:
1 parent
add273fc22
commit
b1986695b3
4 files changed
+56
-2
No files matched your search
@@ -249,6 +249,17 @@
|
||||
- 产出:`daemon-内存观察-复现单.md`(三样必采项 + 现成命令 + 判据 + 第一组记录);采样器 `mem_watch.py` 落**工作区根**(⛔ 不放 `tmp/`,那里会被清理),已起后台采样(5 分钟/20 秒一条 → `tmp/mem-watch-20261009.csv`)。
|
||||
- ⛔ 未调 daemon 启动参数、未重启 daemon、未打断任何会话(候选 B 的代价已否掉)。
|
||||
|
||||
## 06:46 · 采样跑完:第二组对照**又一次修正结论**(连「写大文件」也不是充分因)
|
||||
|
||||
- 采样文件 `tmp/mem-watch-20261009.csv`(06:38:38–06:43:38,20 秒一条):内存 `191 → 193 → 260 → 196 → 205MB`,rss `450 → 501 → 524 → 443 → 450MB`。
|
||||
- 🔴 **`06:39:58` 涨到 260MB、`06:40:58` 掉回 196MB**(GC 收回 64MB),与暴涨组第一轮(609→132)**同型**。
|
||||
- 🔴 **该时段会话确实写了同量级大文件**:`ui/mcn-workbench.html` 由 133459 B 改到 **135041 B**(06:39),另有 **146341 B** 的 `_scratch/p1-1440-dom.html` 与 133459 B 的 `.bak-before-gatefix.html`。**内存峰值仍只 260MB 且被收回** ⇒ 上一轮「嫌疑收窄到大文件写入」的结论**被这组数据推翻**。
|
||||
- 事件速率:5 分钟 `received` +42087(平均 **8417/分**),比暴涨段的 +9097~+18727/分**更低**。
|
||||
- **三次观测并排**:峰值 **609MB(收回)/957MB(未收回被杀)/260MB(收回)** ⇒ 差异更像**随机振幅**,不是某个动作的必然结果。
|
||||
- **定性修正**:问题不是「哪个动作撑爆它」,而是 **daemon 内存本来就在高振幅锯齿,能否收回取决于 GC 时机;957MB 那次是「没赶上」的尾部事件**。
|
||||
- 已更新:取证报告「要点四」、复现单「结论三/结论四」+新增「三次观测并排」一节。
|
||||
- ⚠️ **下一步要真找因只剩堆快照一条路** —— 再攒曲线点边际收益已经很低。
|
||||
|
||||
## 06:30 · 结果检查第 32 棒 —— 锁已释放,本轮零派活
|
||||
|
||||
- 本棒(自动化 `c9779455`,第 32 棒)现取五样:`state.py` 仍不存在、`taskgraph.json` 仍不存在、台账 16 条(15 done + 1 blocked)、`lifecycle`=进行中、`acceptance` 3 过 + 1 不过。
|
||||
|
||||
+22
-1
@@ -23,7 +23,11 @@
|
||||
|
||||
**结论一**:事件速率不是充分因 —— 平稳组的事件速率**不比暴涨组低**,内存却稳在 200MB 以内。
|
||||
|
||||
**结论二**:暴涨组的独有动作是**一次写入 133KB 大文件**(`ui/mcn-workbench.html`,133459 B),且当时连着出现 5 条 `[ResourceReport] artifact observed`。**这是当前唯一可疑的触发点。**
|
||||
**结论二(已在本组第二轮观察后被削弱,见下)**:暴涨组的独有动作是**一次写入 133KB 大文件**(`ui/mcn-workbench.html`,133459 B),且当时连着出现 5 条 `[ResourceReport] artifact observed`。当时以为「大文件写入」是唯一可疑触发点。
|
||||
|
||||
**结论三(2026-10-09 06:43 追加,推翻结论二)**:第二轮对照里,那个会话**同样写了大文件**(`mcn-workbench.html` 从 133459 B 改到 135041 B,另有 146341 B 的 dom dump),内存峰值却只有 **260MB**,还被 GC 收回了 64MB。⇒ **连"写大文件"也不是充分因。**
|
||||
|
||||
**结论四(当前定性)**:三次观测的峰值分别是 **609MB(收回)/957MB(未收回)/260MB(收回)**,差异看起来更像**随机振幅**。所以问题不是"哪个动作撑爆它",而是 **daemon 内存本来就在高振幅锯齿,能不能收回取决于 GC 时机;957MB 那次是"没赶上"的尾部事件**。
|
||||
|
||||
---
|
||||
|
||||
@@ -90,3 +94,20 @@ grep "DaemonMemWatch" <logs>/daemon.log | sed -E 's/.*timestamp":"([^"]+)".*heap
|
||||
- 事件:`received` 从 `420014`(06:35)涨到 `452194`(06:37),增量 `+20758` / `+11422`。
|
||||
- 该时段会话动作:读旧工具目录、建 `ui/_tools`/`ui/_scratch`(06:37),**尚未写大文件**。
|
||||
- 判定:**内存未失控**。与暴涨组形成有效对照 ⇒ 见第一节「结论一」。
|
||||
|
||||
### 第 2 组 · 2026-10-09 06:38:38–06:43:38(同一会话,20 秒一条采样)
|
||||
|
||||
- daemon:`73936`。数据源:`tmp/mem-watch-20261009.csv`。
|
||||
- 内存全程:`191 → 193 → 260 → 196 → 205MB`(rss `450 → 501 → 524 → 443 → 450MB`)。
|
||||
- 🔴 **`06:39:58` 涨到 260MB,`06:40:58` 掉回 196MB** —— **GC 收回 64MB**,与暴涨组第一轮(609→132)同型。
|
||||
- 事件:`received` 从 `452194`(06:38)涨到 `494281`(06:43),**5 分钟 +42087,平均 8417/分钟**。
|
||||
- 🔴 **该时段会话确实写了大文件**:`ui/mcn-workbench.html` 由 133459 B 改到 **135041 B**(06:39),另产出 **146341 B** 的 `ui/_scratch/p1-1440-dom.html`(06:36)与 133459 B 的 `.bak-before-gatefix.html`(06:38)。
|
||||
- 判定:**写了同量级的大文件,内存却只到 260MB 且被收回** ⇒ 第一节「结论二」被推翻,改按「结论三 / 结论四」定性。
|
||||
|
||||
### 三次观测并排(当前全部数据点)
|
||||
|
||||
- 第 1 次 · daemon `53940`:峰值 **609MB**,**被 GC 收回**(→132MB);随后又涨到 **957MB**,**未收回,被杀**。
|
||||
- 第 2 次 · daemon `73936`(06:32–06:38):峰值 **202MB**,锯齿未失控。
|
||||
- 第 3 次 · daemon `73936`(06:38–06:43):峰值 **260MB**,**被 GC 收回**(→196MB),期间写了大文件。
|
||||
|
||||
**汇总判定**:目前**没有任何单一动作能解释 957MB 那次的失控**。三次的峰值差异更像振幅随机;能稳定观察到的只有"涨上去、GC 再收回"这个锯齿本身。**要继续找因,唯一可靠的办法是堆快照**(看增长集中在哪类对象),而不是再攒曲线点。
|
||||
@@ -48,7 +48,12 @@
|
||||
|
||||
**换算比例**:16:51 段约 **31KB/事件**、16:52 段约 **27KB/事件** —— 两段一致,但**这是相关关系,不是已证因果**(见第六节)。
|
||||
|
||||
**要点四(后续对照,2026-10-09 06:32–06:38 补测)**:另起一个后台会话(跑闸门、读工具目录,**没有写大文件**)时,事件速率**同样高**(`+20758`/`+11422` 每分钟),而内存只在 **116–202MB 之间锯齿**(GC 持续回收)。⇒ **事件速率不是内存暴涨的充分因**;两组的唯一明显差别是暴涨组当时**一次写入了 133KB 的大文件**。据此把嫌疑收窄到「大文件写入」这一侧,验证方法见 `daemon-内存观察-复现单.md`。
|
||||
**要点四(后续对照,2026-10-09 06:32–06:43 补测,两轮)**:另起一个后台会话(跑闸门、复制工具、改文件)做对照,两次结果**都削弱了"某个特定动作触发暴涨"的假设**:
|
||||
|
||||
- 06:32–06:38:事件速率与暴涨组同量级(`+20758`/`+11422` 每分钟),内存只在 **116–202MB 锯齿**。
|
||||
- 06:38–06:43(20 秒一条采样):`heap` 走 **191 → 193 → 260 → 196 → 205MB**;期间该会话**同样写了大文件**(`mcn-workbench.html` 133459 → 135041 B,另有 146341 B 的 dom dump),内存峰值仍只到 **260MB**,且 `06:40:58` **被 GC 收回 64MB**。
|
||||
|
||||
⇒ **事件速率不是充分因,连"写大文件"也不是**。三次观测的峰值分别是 **609MB(收回)/957MB(未收回)/260MB(收回)** —— 差异像**随机振幅**,不是某个动作的必然结果。据此把问题重新定性为:**daemon 内存在高振幅锯齿,能否回收取决于 GC 时机;957MB 那次是"没赶上"的尾部事件**,而不是"某个操作必然撑爆它"。验证方法见 `daemon-内存观察-复现单.md`。
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
# sampling start 2026-10-09 06:38:38
|
||||
06:38:38,pid=73936,heap=191MB,heapTotal=244MB,rss=450MB,received=452194,immediateSent=8307
|
||||
06:38:58,pid=73936,heap=193MB,heapTotal=290MB,rss=501MB,received=466340,immediateSent=8395
|
||||
06:39:18,pid=73936,heap=193MB,heapTotal=290MB,rss=501MB,received=466340,immediateSent=8395
|
||||
06:39:38,pid=73936,heap=193MB,heapTotal=290MB,rss=501MB,received=466340,immediateSent=8395
|
||||
06:39:58,pid=73936,heap=260MB,heapTotal=307MB,rss=524MB,received=479545,immediateSent=8566
|
||||
06:40:18,pid=73936,heap=260MB,heapTotal=307MB,rss=524MB,received=479545,immediateSent=8566
|
||||
06:40:38,pid=73936,heap=260MB,heapTotal=307MB,rss=524MB,received=479545,immediateSent=8566
|
||||
06:40:58,pid=73936,heap=196MB,heapTotal=244MB,rss=443MB,received=489195,immediateSent=8668
|
||||
06:41:18,pid=73936,heap=196MB,heapTotal=244MB,rss=443MB,received=489195,immediateSent=8668
|
||||
06:41:38,pid=73936,heap=196MB,heapTotal=244MB,rss=443MB,received=489195,immediateSent=8668
|
||||
06:41:58,pid=73936,heap=199MB,heapTotal=237MB,rss=450MB,received=492667,immediateSent=8726
|
||||
06:42:18,pid=73936,heap=199MB,heapTotal=237MB,rss=450MB,received=492667,immediateSent=8726
|
||||
06:42:38,pid=73936,heap=199MB,heapTotal=237MB,rss=450MB,received=492667,immediateSent=8726
|
||||
06:42:58,pid=73936,heap=205MB,heapTotal=239MB,rss=450MB,received=494281,immediateSent=8743
|
||||
06:43:18,pid=73936,heap=205MB,heapTotal=239MB,rss=450MB,received=494281,immediateSent=8743
|
||||
# sampling end 2026-10-09 06:43:38
|
||||
|
Reference in new issue
Block a user