pm2를 사용해 무중단Nodejs 서비스 구성하기

nawnoes·2021년 1월 7일
0

pm2를 사용해 무중단Nodejs 서비스 구성하기

1. Nodejs

노드의 단점

노드는 기본적으로 싱글스레드라 단일 코어에서 실행되기 때문에 멀티 코어 시스템을 사용할 수 없는 단점이 있다.

개선 방법

단일 코어에서만 돈다면 8코어 16 코어에서 돌지 못할 것인가? 하지만 노드에서는 클러스터 모듈을 통해 단일 프로세를 멀티 프로세스로 늘릴 수 있게 제공.

사용법

클러스터 모듈을 통해 마스터 프로세스에섯 CPU 코어 수 만큼 워커 프로세스를 생성하여 모든 코어를 사용할 수 있게한다.

2. PM2

위의 클러스터 모듈을 사용해서 어떻게 무중단 서비스를 구성할 수 있을까? 그 방법은 PM2라는 Nodejs 프로세스 매니저를 사용해 가능합니다.

설치

npm을 통해 설치

$ npm install -g pm2@latest

① 기본 사용방법

기본으로 작성된 app.js를 pm2로 기동하는 경우 아래와 같이 명렬어를 입력해 기동할 수 있다.

옵션없이 fork 모드로 어플리케이션을 실행

$ pm2 start app.js

② .config.js 설정파일을 통한 사용

pm2설정파일

//ecosystem.config.js
module.exports = {
  apps: [{
  name: 'app',
  script: './app.js',   // 실행할 파일
  instances: 0,         // 0은 코어수 만큼 프로세스를 생성
  exec_mode: ‘cluster’
  }]
}

실행

$ pm2 start pm2.config.js

☀︎ 기타

프로세스 갯수 조절 - scale 옵션을 통해 조절

  • $ pm2 scale app +4

프로세스 재시작 - 프로그램 수정 뒤에 반영하고 싶은 경우 reload 명령서 사용

  • $pm2 reload app

프로세스 상태 확인 - 프로세스의 상태를 간략하게 표시

  • $ pm2 list

References

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

0개의 댓글