PM2

PM2는 Node.js의 프로세스 매니저 입니다.

Nodejs의 동작방식

Node.js는 기본적으로 싱글 스레드(thread)로 동작을 합니다. 즉, Node.js 애플리케이션은 단일 CPU 코어에서 실행되기 때문에 CPU의 멀티코어 시스템은 사용할 수 없습니다.

보유하고 있는 서버의 사양이 8코어이고 하이퍼스레딩을 지원한다면 최대 16개 코어를 사용 할 수 있게 됩니다. 모든 코어를 사용해 최대 성능을 내지 못하고 오직 한 개의 코어만 사용해야 한다면 주어진 자원을 100% 제대로 활용하지 못하는 결과를 가지게 됩니다.

클러스터(Cluster) 모듈

Node.js는 이런한 문제를 해결하기 위해 클러스터(Cluster) 모듈을 통해 단일 프로세스를 멀티 프로세스(Worker)로 늘릴 수 있는 방법을 제공합니다.

따라서 클러스터 모듈을 사용하여 마스터 프로세스에서 CPU 코어 수만큼 워커 프로세스를 생성하여 모든 코어를 사용할 수 있게끔 개발 방법을 변경해 주어야 합니다.

처음에 Nodejs 애플리케이션을 실행하면 마스터 프로세스만 생성이 됩니다. 그리고 이때 CPU 개수만큼 워커 프로세스를 생성하고, 마스터 프로세스와 워커 프로세스가 각각 수행해야 할 일들을 정리해서 구현합니다.

Node.js의 프로세스 매니저

워커 프로세스가 생성됐을 때 온라인 이벤트가 마스터 프로세스로 전달되면 어떻게 처리할지, 워커 프로세스가 메모리 제한선에 도달하거나 예상치 못한 오류로 종료되면서 종료(exit) 이벤트를 전달할 땐 어떻게 처리할지, 그리고 애플리케이션의 변경을 반영하기 위해 재시작해야 할 때 어떤 식으로 재시작을 처리할 지 등등 고려해야 합니다.

이런 것들은 직접 개발하기에 번거로운 작업입니다. 따라서 이런 문제를 간편하게 해결할 수 있는 도구가 필요로 합니다.

PM2라는 Node.js의 프로세스 매니저가 존재합니다.

PM2는 고급버젼은 유료 서비스 입니다.

PM2 설치하기

pm2는 npm을 통하여 설치를 할 수 있습니다.

//코드1. PM2 설치
$ npm install -g pm2@latest

또는 Volta가 설치되어 있다면 다음과 같이 명령을 입력합니다.

volta install pm2

PM2 실행하기

먼저 실행할 NodeJS 어플리케이션을 준비합니다.

그리고, pm2를 실행합니다.

$ pm2 start app.js

참조문헌

  • https://engineering.linecorp.com/ko/blog/pm2-nodejs/
서브목차