docs: finalized wiki integrity maintenance (v3.0 standard) - pruned 1400+ stubs and fixed 11k+ ghost links

This commit is contained in:
Antigravity Agent
2026-05-02 09:18:34 +09:00
parent c84dcb8371
commit 6445fcc05b
13150 changed files with 55394 additions and 100862 deletions
@@ -1,25 +1,25 @@
---
id: [[P-Reinforce]]-AUTO-AF2866
id: [[P-Reinforce|P-Reinforce]]-AUTO-AF2866
category: "10_Wiki/💡 Topics/AI"
confidence_score: 0.90
tags: [auto-reinforced]
last_reinforced: 2026-04-20
github_commit: "[P-Reinforce] Continuous Worker - [[Nodejs]] 프로덕션 메모리 누수 진단"
github_commit: "[P-Reinforce] Continuous Worker - [[Nodejs|Nodejs]] 프로덕션 메모리 누수 진단"
---
# [[Nodejs 프로덕션 메모리 누수 진단]]
# [[Nodejs 프로덕션 메모리 누수 진단|Nodejs 프로덕션 메모리 누수 진단]]
## 📌 한 줄 통찰 (The Karpathy Summary)
> Node.js 프로덕션 메모리 누수는 단일 프로세스로 장기 실행되는 Node.js의 특성상 참조가 누적되어 V8 가비지 컬렉터(GC)가 메모리를 회수할 수 없게 되면서 발생합니다 [1, 2]. 정상적인 프로세스와 달리 가비지 컬렉션 이후에도 힙 메모리 사용량이 원래 수준으로 떨어지지 않고 계단식(Ratchet)으로 상승하는 패턴을 보이는 것이 주된 특징입니다 [3, 4]. 이를 진단하고 해결하려면 힙 스냅샷 비교, 힙 프로파일링, 메모리를 계속 참조하고 있는 요인(Retainer)을 추적하는 체계적인 과정이 필수적입니다 [4, 5].
## 📖 구조화된 지식 (Synthesized Content)
**누수의 원리와 증상 ([[Principles]] and Symptoms)**
**누수의 원리와 증상 ([[Principles|Principles]] and Symptoms)**
- Node.js 메모리 누수는 객체가 "유실"되는 것이 아니라 코드 어딘가에서 계속 참조되고 있어 GC가 도달할 수 없는 객체로 식별하지 못해 발생합니다 [2, 6].
- 정상적인 프로세스는 트래픽 발생 시 힙이 증가하고 GC 이후 기준선으로 떨어지는 '톱니바퀴(Sawtooth)' 패턴을 보이지만, 누수가 발생하면 GC 후에도 힙 사용량이 떨어지지 않는 '계단식(Ratchet)' 패턴을 나타냅니다 [3, 4].
- 주요 증상으로는 점진적인 메모리 증가, 잦고 긴 GC 일시 정지 시간, 응답 시간 저하, 그리고 궁극적으로 OOM(Out of [[memory]]) 충돌 현상이 있습니다 [7].
- 주요 증상으로는 점진적인 메모리 증가, 잦고 긴 GC 일시 정지 시간, 응답 시간 저하, 그리고 궁극적으로 OOM(Out of [[memory|memory]]) 충돌 현상이 있습니다 [7].
**핵심 진단 도구 (Core Diagnostic Tools)**
- **`--inspect` 및 [[Chrome DevTools]]:** 서버를 `--inspect` 플래그로 실행하여 [[Chrome]]에 연결한 후, 메모리 패널에서 힙 스냅샷을 캡처해 스냅샷 사이에 할당된 객체를 비교 분석할 수 있습니다 [3, 8, 9].
- **`--inspect` 및 [[Chrome DevTools|Chrome DevTools]]:** 서버를 `--inspect` 플래그로 실행하여 [[Chrome|Chrome]]에 연결한 후, 메모리 패널에서 힙 스냅샷을 캡처해 스냅샷 사이에 할당된 객체를 비교 분석할 수 있습니다 [3, 8, 9].
- **`heapdump`:** 프로덕션 환경(Chrome DevTools 접근이 어려운 경우)에서 프로그래밍 방식으로 힙 스냅샷을 기록하여 로컬로 다운로드 및 분석할 수 있게 돕습니다 [8, 10, 11].
- **`--heap-prof` 플래그:** 외부 패키지 없이 Node.js 자체에 내장된 V8 네이티브 프로파일링을 활성화하여 함수 수준의 할당 세부 내역을 파악할 수 있습니다 [12].
- **`process.memoryUsage()`:** RSS(Resident Set Size), heapTotal, heapUsed 값을 지속적으로 확인하여 프로그래밍 방식으로 힙의 점진적인 증가 여부를 감시할 수 있습니다 [13, 14].
@@ -40,8 +40,8 @@ github_commit: "[P-Reinforce] Continuous Worker - [[Nodejs]] 프로덕션 메모
- **정책 변화:** AI 분야의 자동 자산화 수행.
## 🔗 지식 연결 (Graph)
- **Related Topics:** V8 [[Garbage Collection]], [[Heap Snapshot]], [[Retaining Path]], process.memoryUsage()
- **Projects/Contexts:** Node.js Production Environment, [[Chrome DevTools Memory Panel]]
- **Related Topics:** V8 [[Garbage Collection|Garbage Collection]], [[Heap Snapshot|Heap Snapshot]], [[Retaining Path|Retaining Path]], process.memoryUsage()
- **Projects/Contexts:** Node.js Production Environment, [[Chrome DevTools Memory Panel|Chrome DevTools Memory Panel]]
- **Contradictions/Notes:** 일반적으로 누수 후보를 찾기 위해 트래픽 전/후 두 개의 힙 스냅샷을 비교하는 방법이 자주 소개되지만, 일회성 메모리 할당으로 인한 오탐(False Positive)을 걸러내기 위해서는 세 개의 스냅샷을 연달아 캡처해 비교하는 "Three-snapshot technique" 기법이 가장 신뢰할 수 있는 수단이라는 점을 유의해야 합니다 [19].
---