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/