Yuki Takei 6 месяцев назад
Родитель
Сommit
43f3beadf8
1 измененных файлов с 76 добавлено и 0 удалено
  1. 76 0
      .serena/memories/git-bisect-memory-consumption-investigation-plan.md

+ 76 - 0
.serena/memories/git-bisect-memory-consumption-investigation-plan.md

@@ -0,0 +1,76 @@
+# git bisectによるメモリ消費量増加の原因特定調査計画
+
+## 調査目的
+2025/7/1以降、production buildしたサーバーのメモリ利用量(Heap Total)が約25%~33%増加した原因コミットを特定する。
+
+## 判定基準
+- **Good:** Heap Total ≒ 90MB
+- **Bad:** Heap Total ≒ 110MB
+
+## 調査範囲
+- 開始コミット: タグ `v7.2.9` (acdccb05538b72a593d690ce042922d6b71a4a63)
+- 終了コミット: master (db1d378da55ffa8c08b4f1a0cca3b6a2a3e2c219)
+
+## 実行手順
+1. 対象コミットをチェックアウト
+   ```bash
+   git checkout {target-commit}
+   ```
+2. ビルド
+   ```bash
+   cd /workspace/growi/apps/app
+   turbo run bootstrap
+   turbo run build
+   ```
+3. サーバー起動
+   ```bash
+   NODE_ENV=production node --inspect -r dotenv-flow/config dist/server/app.js
+   ```
+4. メモリ消費量計測
+   ```bash
+   node --experimental-strip-types --experimental-transform-types --experimental-detect-module --no-warnings=ExperimentalWarning /home/vscode/print-memory-consumption.ts
+   ```
+5. Heap Total値でGood/Bad判定
+
+## 注意事項
+- サーバー起動直後の値で判定する(アクセスによるメモリリークの可能性もあるため、なるべくアクセス前に計測)。
+- 必要に応じて複数回計測し、安定した値を採用する。
+- bisectの自動化には、Heap Total値の判定をスクリプト化することで効率化可能。
+
+---
+
+# git bisect 実施指示書
+
+1. bisect開始
+   ```bash
+   git bisect start
+   git bisect bad master
+   git bisect good v7.2.9
+   ```
+2. 各コミットで以下を実施
+   - 上記「実行手順」に従いビルド・起動・計測
+   - Heap Total値でGood/Bad判定
+   - 判定結果に応じて
+     ```bash
+     git bisect good
+     # または
+     git bisect bad
+     ```
+3. bisect終了後、原因コミットを記録
+   ```bash
+   git bisect reset
+   ```
+
+---
+
+## 参考: 判定自動化例(bashスクリプト)
+
+```bash
+HEAP_TOTAL=$(node .../print-memory-consumption.ts | grep 'Heap Total' | awk '{print $3}')
+if (( $(echo "$HEAP_TOTAL < 100" | bc -l) )); then
+  exit 0  # good
+else
+  exit 1  # bad
+fi
+```
+bisect runで自動化する場合はこのスクリプトを利用してください。