티스토리 뷰
https://nodejs.org/api/cli.html#cli_node_options_options
꽤 오랜시간 동안 nodejs를 사용하면서 이번에 새로 알게된 사실이 있습니다
nodejs의 v8엔진이 최대 사용할수 있는 힙메모리 영역은 디폴트로 한계치가 정해져있습니다.
(저는 디폴트가 무제한인줄알았는데 그게 아니었습니다)
좀 더 검색을 해보니 nodejs 버전에 따라
v12 미만에서 1.35GB
v14 미만에서 2GB
v14 부터는 4GB
힙메모리 영역의 제한이 있습니다
그래서 만약 내가 nodejs를 8GB의 메모리를 가진 인스턴스에 띄우는 경우,
내가 별다른 옵션을 지정하지 않으면 실제적으로 8GB의 메모리를 사용할수 있지만,
nodejs는 4GB까지만 사용합니다
그러면 메모리 크기의 제한을 늘리려면 어떻게 하면될까요
nodejs 프로세스를 띄울때
--max-old-space-size=SIZE
옵션을 통해서 최대 사용가능한 힙메모리 영역을 내가 원하는 만큼 지정할수 있습니다
node --max-old-space-size=1024 index.js #increase to 1gb
node --max-old-space-size=2048 index.js #increase to 2gb
node --max-old-space-size=3072 index.js #increase to 3gb
node --max-old-space-size=4096 index.js #increase to 4gb
node --max-old-space-size=5120 index.js #increase to 5gb
node --max-old-space-size=6144 index.js #increase to 6gb
node --max-old-space-size=7168 index.js #increase to 7gb
node --max-old-space-size=8192 index.js #increase to 8gb
이런식으로 말이죠
V8은 할당된 힙모메리의 한계에 가깝게 메모리가 소비될경우
가비지컬렉터가 동작하여 사용하지 않는 메모리를 해지하게되는데,
너무 작게 힙메모리 영역을 설정할 경우 V8이 가비지 콜렉팅을 더 자주 많이 하게 되어 퍼포먼스를 떨어뜨리게 되므로
적당한 값을 설정하라고 하는군요
예를 들어 2GB의 메모리의 머신인 경우 약 1.5GB를 nodejs에 할당하고 나머지는 메모리스와핑을 피하기 위해 남겨두라고 합니다
'BACKEND > NODEJS' 카테고리의 다른 글
nestjs @typescript-eslint/no-unused-vars 가 자꾸 괴롭힐때 (0) | 2022.12.08 |
---|---|
nodejs의 논블로킹(non-blocking) 체감하기 (3) | 2022.09.21 |
[nestjs] ClassSerializerInterceptor 전체 적용하기 (0) | 2022.08.10 |
nodejs 쓰레드 활용하기 (0) | 2022.08.08 |
github package로 private npm package 배포하기 (2) | 2022.02.22 |
- Total
- Today
- Yesterday
- AWS
- 소프트웨어
- 네이버
- 대학생
- 애플
- 자바스크립트
- 공모전
- 안드로이드
- 어플리케이션
- CSS
- 경진대회
- iPhone
- 스마트폰
- 구글
- 벤처
- 게임
- php
- android
- Apple
- 모바일
- 앱스토어
- 아이디어
- 앱
- 창업
- JavaScript
- 웹표준
- 트위터
- 아이폰
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |