--inspect
: NodeJS 8.0 부터 v8-inspector를 NodeJS 프로그램에서 실행하는 옵션
: --debug 옵션 대신 이 옵션을 사용함으로써 프로그램 실행중 디버깅을 할 수 있음
: 작성한 NodeJS 프로그램을 디버그 모드로 실행할 수 있음
- 공식문서
: https://nodejs.org/ko/docs/guides/debugging-getting-started/
사용법
1) 로컬에서 인스펙트 모드로 NodeJS 실행
node --inspect app.js
2) 크롬 브라우저의 chrome://inspect 로 접속하여 아래 사진과 같이 나와있는 Target의 inspect를 클릭
3) 열린 크롬 개발자 도구의 탭에서 소스를 디버깅하거나, 메모리 힙 스냅샷을 생성할 수 있다
--inspector로 원격 서버 디버깅하기
1) 리눅스 등 서버에서 프로그램을 실행
node --inspector=0.0.0.0:9229 app.js
2) 크롬 inspect 페이지에서 configure 클릭
3) 서버의 IP와 포트 입력 후 Done을 눌러 저장
4) Remote Target에 입력한 서버에서 실행중인 NodeJS 주소가 나옴
--inspector로 힙 메모리 스냅샷 생성하고 읽기
1) 위 두 방법대로 진행 후 크롬 개발자 도구에서 Memory 탭 진입
2) 아래 화면에서 실행중인 프로그램의 실시간 힙 메모리 사용량이 나오는데, Take Snashot을 누르면 힙 스냅샷이 생성됨 (왼쪽 화면의 Profiles 아래에 나옴)
: 생성된 힙 스냅샷은 save를 눌러 따로 저장할 수 있음
3) 일정 시간 혹은 기준을 간격으로 스냅샷을 여러개 생성 후 비교
comparison 항목 설명
- constructor
: 개체
- New
: 기준 스냅샷에서 새로 생성된 객체의 수
- Deleted
: 비교 스냅샷 시점에서 기준 스냅샷의 시점과 비교하여 삭제된 객체 수
- Delta
: New - Deleted 값 (증분값)
: 기준 스냅샷 시점에서 존재하는 객체수 - 비교 스냅샷 시점에서 삭제된 객체수
- Alloc.Size
: 기준 스냅샷에서 해당 개체가 차지하는 메모리 용량 (Byte)
- Freed.Size
: 비교 스냅샷 시점에서 기준 스냅샷의 시점과 비교하여 반환된 메모리 용량 (Byte)
- Size Delta
: Alloc - Freed (증분 용량?)
: 기준 스냅샷 시점에서 차지중인 용량 - 비교 스냅샷 시점에서 반환된 용량
Refference
'Programming > NodeJS' 카테고리의 다른 글
NodeJS와 메모리 2 - 가상메모리와 힙 / 스택 (0) | 2022.09.12 |
---|---|
NodeJS와 메모리 1 - V8 엔진 (0) | 2022.09.12 |
클러스터링을 이용한 멀티쓰레드 IPC (0) | 2022.08.31 |
NodeJS memory leak 추적하는 방법 (메모리를 낭비하는 함수 추적) (0) | 2022.08.26 |
NodeJS 유닛 테스트 (0) | 2022.08.16 |