소개

PM2는 Node.js 애플리케이션을 위한 고급 프로덕션 프로세스 매니저입니다.

이 도구는 애플리케이션을 백그라운드에서 실행하고, 다운되면 자동으로 재시작하며, 로드 밸런싱을 위한 클러스터 모드를 제공하는 등의 기능을 포함하고 있습니다.

 

사용하는 이유

PM2는 주로 아래와 같은 기능들 때문에 널리 사용됩니다:

  1. 프로세스 관리: PM2는 애플리케이션을 백그라운드에서 실행하고, 애플리케이션이 실패했을 때 자동으로 재시작합니다. 
  2. 로드 밸런싱: 여러 인스턴스를 실행하여 애플리케이션의 부하를 분산시키는 클러스터 모드를 제공합니다. 이는 시스템 리소스를 효율적으로 사용하고 성능을 향상시키는 데 도움을 줍니다.
  3. 로그 관리: 실행 중인 프로세스의 로그를 관리하고, 쉽게 접근할 수 있게 해 줍니다. 이는 문제 해결 과정에서 큰 도움을 줍니다.
  4. 무중단 서비스: PM2는 노드 애플리케이션을 무중단으로 운영할 수 있도록 돕습니다. 코드를 변경한 후에도 서비스를 중단하지 않고 업데이트할 수 있습니다.

 기본적인 사용방법

- 설치

$ npm install -g pm2@latest

 

- pm2 를 이용한 애플리케이션 실행

$ pm2 start app.js

 

-  프로세스 삭제 , 중단,  모든 프로세스 죽이기

$ pm2 delete 프로세스id
$ pm2 stop 프로세스id
$ pm2 kill

 

- 프로세스 재시작/ 리로딩

$ pm2 restrart 프로젝트실행파일이름.js // 선호되지 않는 명령어 :프로세스를 kill하고 시작
$ pm2 reload 프로젝트실행파일이름.js // 선호 : 프로세스를 kill 하지 않고 바로 적용

 

- 프로세스 상태확인

$ pm2 status
$ pm2 list

   status : 현재 실행중인 프로세스의 운영상태에 초점을 맞춘 정보 제공

   list :  모든 관리 중인 프로세스에 대한  포괄적인 세부 정보 제공 

 

- 프로세스 모니터링

$ pm2 monit

 

 

무중단 서비스 적용 방법

→ cluster 모드로 실행  : Node.js가 싱글 스레드라서 주어진 자원을 최대한 활용하지 못하고 하나의 CPU만 사용하는 문제를 해결할 수 있습니다.

 

- ecosystem.config.js 파일 생성

$ pm2 ecosystem

 

- 파일을 아래와 같이 수정

apps: [{
  name: 'app',
  script: './app.js',// 실행해야하는 스크립트 입력
  instances: 0, // cpu 코어수 만큼 프로세스 생성
  exec_mode: ‘cluster’, // 모드 변경
  env: {
      NODE_ENV: 'local',
    },
  }]

  참고로 app 에 사용할 수 있는 변수는 다음과 같다.

  • name : 실행 모드 이름
  • script : 실행되는 파일
  • instances : 프로세스 수
  • autorestart : 재시작 on/off
  • watch : watch on/off
  • env: Node.js 환경변수 

프로세스 증가 / 감소

$ pm2 scale app +4 // 프로세스 4 증가
$ pm2 scale app 4  // 프로세스 4 감소

 

- 실행

$ pm2 start ecosystem.config.js

 

 

 참고자료

  1. https://engineering.linecorp.com/ko/blog/pm2-nodejs
  2. https://any-ting.tistory.com/74  
  3. pm2.keymetrics.io/

+ Recent posts