성장에 목마른 코린이

[Node.js] PM2 소개, 사용이유 및 사용법 본문

Javascript/Node.js

[Node.js] PM2 소개, 사용이유 및 사용법

성장하는 코린이 2022. 11. 3. 17:07
728x90

현재 회사에서 운영중인 프로젝트들을 PM2로 관리하고 있어서, PM2를 공부하게 되었습니다!

PM2는 Node.js 어플리케이션을 쉽게 관리할 수 있게 해주는 Process Manager입니다.

Node.js를 Express와 같은 프레임워크를 이용해 개발자들에게 사용성을 엄청 높여줍니다!

 

PM2 사용 이유

Node.js를 서버로 Back-End에 사용하려면 대표적인 고민이 있습니다.

1. Node.js를 Cluster mode로 실행시킬려면 어떻게 하지?

2. 메모리가 넘치면 어떻게 하지?

3. Node.js로 멀티 코어, 하이퍼 스레딩을 사용하고 싶다면 어떻게 하지?

4. 서비스를 제공하는 도중 갑자기 서버가 중지되면 어떻게 하지?

 

Node.js 어플리케이션을 cluster mode로 실행시킨다거나, 메모리가 넘친다거나,

오류로 인해 프로세스가 종료되는 등의 상황에 직면했을 때 각각의 상황을 사용자가 모두 신경 써서 처리해줄 수도 있지만,

너무 복잡하고 신경 써야 할 일들이 많아집니다.

 

PM2를 이용하면 이런 골치 아픈 문제들을 문제없이 해결할 수 있습니다!

PM2의 기능

PM2 Cluster mode (싱글 스레드 -> 멀티 스레드)

PM2의 cluster mode는 Node.js의 cluster module을 이용해

기본적으로 싱글 스레드인 Node.js를 멀티 스레드로 구동시켜줍니다.

 

싱글 스레드의 경우 구동 중인 서버의 CPU 개수와 상관없이 1개만 사용할 수 있기에 서버의 성능을 제대로 끌어내지 못합니다.

반면, 멀티 스레드는 최대 서버 CPU수(하이퍼스레딩을 지원한다면 2배)만큼 프로세스를 생성해 최대 성능을 끌어낼 수 있습니다.

 

Cluster mode 사용법

다음과 같이 ecosystem.config.js를 설정해주면 됩니다!

PM2 start

PM2 프로세스를 시작하기 위해서는 'pm2 start script or 설정파일명' 명령어를 사용하면 됩니다.

위에서 설정한 값을 기준으로 프로세스를 시작하면 아래 결과를 얻을 수 있습니다.

PM2 모니터링

실행된 PM2 프로세스를 모니터링 하려면 'pm2 monit' 명령어를 입력하면 됩니다.

명령어를 실행하면 아래의 항목들을 실시간으로 확인할 수 있습니다.

  • 각 프로세스의 메모리, CPU 사용률, 현재 상태
  • 선택된 프로세스의 로그
  • 전체 프로세스의 Heap 사이즈, 사용률
  • 어플리케이션 정보

PM2 reload

PM2 프로세스를 임의로, 특정 조건, 무중단으로 재시작 시킬 수 있습니다.

 

임의로 재시작

'pm2 reload all | app-name | process-id' 명령어를 통해 재시작이 가능합니다.

모든 프로세스, 특정 어플리케이션 아이디를 이용해 재시작이 가능합니다.

 

메모리 limit 재시작

임의 재시작 외에도 프로세스의 메모리가 지정된 제한선을 넘어서면 자동으로 reload 시킬 수 있습니다.

무중단 배포

 

PM2를 활용한 Node.js 무중단 서비스하기

2022-LINE-engineering-site

engineering.linecorp.com

서비스를 제공하고 있는 도중 갑자기 서버가 중지될때

참조:

Comments