티스토리 뷰

728x90
반응형

https://nodejs.org/api/cli.html#cli_node_options_options

 

Command-line API | Node.js v18.2.0 Documentation

Command-line API# Node.js comes with a variety of CLI options. These options expose built-in debugging, multiple ways to execute scripts, and other helpful runtime options. To view this documentation as a manual page in a terminal, run man node. Synopsis#

nodejs.org

 

꽤 오랜시간 동안 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에 할당하고 나머지는 메모리스와핑을 피하기 위해 남겨두라고 합니다

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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
글 보관함