메모리 누수 (Memory Leak)
: 가비지 컬렉션이 가비지라고 판단하지 않은 데이터들이 쌓여 메모리를 수거하지 않아
프로그램의 메모리 사용량이 폭발적으로 증가하는 현상
메모리 누수 확인 방법
: heapdump 와 같은 패키지를 프로젝트에 설치하여 주기적으로 힙 덤프 파일을 생성해
어떤 객체가 메모리 사용량이 높은지 확인
: 노드 크롬 디버거 혹은 clinic js와 같은 모니터링 툴을 통해 실시간으로 확인
노드 크롬 디버거
- 프로그램 실행
: node --inspect index.js
- 크롬의 inspect 실행
: chrome://inspect
- 현재 가동중인 서버에 대한 inspect 확인
: chrome://inspect/#devices
: Remote Target의 inspect 클릭
- 디버거 실행
: Memory > Profiels의 메모리 부분
: 현재 사용중인 메모리 확인
- 스냅샷 생성
: Select profiling Page에서 Take Snapshot 클릭
- 스냅샷 확인
: 생성된 스냅샷 클릭 > Statics 및 Summary 등 확인
- 메모리 부하를 주는 자바스크립트의 메소드 확인
: 앱 재시작
: Select profiling Page에서 Allocation sampling
: Tree 형식으로 확인
NodeJS의 메모리 누수 확인 도구
- heapdump
: 가장 많이 쓰이는 힙 덤프 도구
: https://www.npmjs.com/package/heapdump
- memwatch
: 메모리 사용 상태에 대해서 확인할 수 있는 도구
: https://www.npmjs.com/package/memwatch
- node-inspector
: 실행중인 앱의 메모리 사용 상태를 확인할 수 있는 도구
: https://www.npmjs.com/package/node-inspector
- clinic.js
: 전역 도구로, 시각적으로 메모리 사용량을 쉽게 확인할 수 있는 도구
Refference
'Programming > NodeJS' 카테고리의 다른 글
NodeJS 유닛 테스트 (0) | 2022.08.16 |
---|---|
NodeJS에서 로깅하기 (0) | 2022.08.13 |
NodeJS의 메모리 관리 방법 (V8 엔진과 가비지 컬렉션) (0) | 2022.08.13 |
NodeJS 순환 참조 문제 해결 방법 (typeerror: converting circular structure to json) (0) | 2022.08.01 |
NodeJS rest-client API JSON이 undefined로 나올때 (0) | 2022.07.30 |