320x100
320x100

참고

 

NodeJS의 메모리 누수 확인 방법

메모리 누수 (Memory Leak) : 가비지 컬렉션이 가비지라고 판단하지 않은 데이터들이 쌓여 메모리를 수거하지 않아 프로그램의 메모리 사용량이 폭발적으로 증가하는 현상 메모리 누수 확인 방법 :

2mukee.tistory.com

 

 

 

 

Clinic.js

: https://clinicjs.org/

: Node.js를 위한 모니터링 및 성능 확인 패키지

 

- Doctor

: Node.js 애플리케이션의 리소스 사용량을 시각적으로 보여주는 라이브러리

 

- Bubbleprof

: Node.js 코드를 시각적으로 프로파일링하여 참조 관계 등을 확인하는 라이브러리

 

- Flame

: Node.js 애플리케이션의 병목 현상 및 CPU 사용량을 시각적으로 보여주는 라이브러리

 

- HeapProfiler

: Node.js 애플리케이션의 메모리 누수를 유발하는 함수를 추적

: 함수별 메모리 사용량과 호출 관계 파악 가능

 

 

 

 

clinic js로 메모리 누수 확인하기

1. clinic js 전역설치

: npm install -g clinic

 

2. clinic js로 코드 실행

: clinic heapprofiler -- node app.js

: 파워셸에서 실행 시 -- 문자를 string으로 인식하면서 clinic으로 프로그램 실행이 안됨

 

3. 힙 프로파일 생성

: 실행중인 프로그램의 터미널 > ctrl + c로 종료

: 프로젝트 디렉터리의 ./clinic에 있는 html 파일 실행

 

4. 힙 프로파일 그래프 분석

 : 오른쪽 상단에 있는 안내를 확인하여 그래프 분석

 

 

 

 

@clinic/heap-profiler를 이용하여 메모리 누수 확인하기

1. 프로젝트에 heap-profiler 설치

: npm install @clinic/heap-profiler

 

2. heap profiler 스크립트 실행

const ClinicHeapProfiler = require('@clinic/heap-profiler');

const heapProfiler = new ClinicHeapProfiler();

// ['node', '--nodeoption', 'app.js']로 옵션 추가 가능
heapProfiler.collect(['node', 'app.js'], (err, filepath) => {
  if (err) {
    console.log('collect error\n', err);
  }

  heapProfiler.visualize(filepath, `${filepath}.html`, () => {
    if (err) {
      console.log('visualize error\n', err);
    }
  });
});

 

3. 힙 프로파일 생성

: 실행중인 프로그램의 터미널 > ctrl + c로 종료

: 프로젝트 디렉터리의 ./clinic에 있는 html 파일 실행

 

4. 힙 프로파일 그래프 분석

 : 오른쪽 상단에 있는 안내를 확인하여 그래프 분석

 

※ 공식문서

: https://github.com/clinicjs/node-clinic-heap-profiler

 

 

 

 

clinic js와 heap-profiler의 원리

: heap-profiler를 통해 node.js 애플리케이션을 wraping 하여 실행

: 이를 통해 node.js 애플리케이션의 힙 메모리 정보를 collection할 수 있음

 

 

 

 

 

 

Refference

 

Tracking Memory Allocation in Node.js - NearForm

This article explains how to measure memory allocation in Node.js applications and why it's so important.

www.nearform.com

300x250
728x90