참고
Clinic.js
: 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
'Programming > NodeJS' 카테고리의 다른 글
NodeJS --inspect (NodeJS 디버깅 / 힙 스냅샷 생성하고 분석 하기) (0) | 2022.09.01 |
---|---|
클러스터링을 이용한 멀티쓰레드 IPC (0) | 2022.08.31 |
NodeJS 유닛 테스트 (0) | 2022.08.16 |
NodeJS에서 로깅하기 (0) | 2022.08.13 |
NodeJS의 메모리 누수 확인 방법 (0) | 2022.08.13 |