반응형

최근 Node.js에서 많은 메모리 사용량으로 인해 서버가 터지는 일이있었다.

Node.js 환경에서 메모리 사용량을 확인하는 방법에 대해 알아보자

 

메모리 확인

Node.js에서는 아래와 같은 명령어로 메모리 사용량을 확인할 수 있다.

process.memoryUsage()

해당 메서드를 실행시킨 결과를 콘솔에 찍어보면 아래와 같은 내용이 나온다.

{
  rss: 4935680,
  heapTotal: 1826816,
  heapUsed: 650472,
  external: 49879,
  arrayBuffers: 9386
}

해당 필드가 각각 무엇을 의미하는지 궁금하면 아래 링크에서 참고하도록하자. 

https://nodejs.org/api/process.html#processmemoryusage

 

Process | Node.js v19.1.0 Documentation

Process# Source Code: lib/process.js The process object provides information about, and control over, the current Node.js process. import process from 'node:process';const process = require('node:process'); Process events# The process object is an instance

nodejs.org

반응형

여기서 확인할 것은 heapUsed이다. heapUsed는 byte 값으로 나오기때문에 1024로 2번 나눠서 MB로 변환해준다음 확인해보자.

const used1 = process.memoryUsage().heapUsed / 1024 / 1024;
console.log(`약 ${Math.round(used1 * 100) / 100} MB의 메모리를 사용중입니다.`);
const test1 = Number(undefined); // NaN
const test2 = Number(null); // 0
const test3 = Number(0); // 0
const test4 = Number('2002'); // 2002


const used2 = process.memoryUsage().heapUsed / 1024 / 1024;
console.log(`약 ${Math.round(used2 * 100) / 100} MB의 메모리를 사용중입니다.`);
//@ts-ignore
const test5 = parseInt(undefined); // NaN
//@ts-ignore
const test6 = parseInt(null); // NaN
//@ts-ignore
const test7 = parseInt(0); // NaN
const test8 = parseInt('2022'); // NaN


const used3 = process.memoryUsage().heapUsed / 1024 / 1024;
console.log(`약 ${Math.round(used3 * 100) / 100} MB의 메모리를 사용중입니다.`);

 

위와 같은 예제 코드를 실행하면 다음과 같은 실행화면을 얻을 수 있다.

 

 

2022/12/05 추가

 

아래 코드를 nodejs에서 사용시 0.5초마다 메모리 사용량을 확인 할 수 있다.

setInterval(() => {
  const memoryData = process.memoryUsage();
  const memoryUsage = {
    rss: `${memoryData.rss / 1024 / 1024} MB`,
    heapTotal: `${memoryData.heapTotal / 1024 / 1024} MB`,
    heapUsed: `${memoryData.heapUsed / 1024 / 1024} MB`,
    external: `${memoryData.external / 1024 / 1024} MB`,
  };
  console.log(memoryUsage);
}, 500);

 

반응형
얼은펭귄