본문 바로가기
Q&A2022년 7월 2일1분 읽기

Node.js 메모리 누수 디버깅 방법

배
배준호
조회 507댓글 1

Node.js 서버가 시간이 지나면 메모리가 계속 증가합니다. 메모리 누수를 어떻게 찾나요?

댓글 1

김김영삼4년 전

Node.js 메모리 누수 디버깅:

1. 힙 스냅샷 비교:

// Chrome DevTools 연결
node --inspect server.js

// 또는 프로그래밍 방식
const v8 = require("v8");
const fs = require("fs");
const snap = v8.writeHeapSnapshot();
console.log("Snapshot:", snap);

2. 흔한 원인:

  • 이벤트 리스너 누적 — removeListener 안 함
    // BAD
    app.get("/", (req, res) => {
    emitter.on("data", handler); // 요청마다 리스너 추가!
    });
  • 전역 변수에 데이터 축적
  • 클로저가 큰 객체를 참조
  • 타이머 정리 안 함 — setInterval clearInterval 누락

3. 도구:

  • clinic.js — clinic doctor -- node server.js
  • heapdump — 힙 덤프 생성
  • process.memoryUsage() — 메모리 사용량 로깅
Ctrl+Enter로 등록