반응형

PM2Node.js 애플리케이션을 온라인으로 관리하고 유지하는 데 도움이 되는 Process Manager입니다. Node.js는 기본적으로 싱글 스레드(thread)이고 단일 CPU 코어에서 실행되기 때문에 CPU의 멀티코어 시스템은 사용할 수 없습니다. Node.js는 이런 문제를 해결하기 위해 클러스터(Cluster) 모듈을 통해 단일 프로세스를 멀티 프로세스(Worker)로 늘릴 수 있는 방법을 제공하고 있습니다. 애플리케이션을 실행하면 처음에는 마스터 프로세스만 실행됩니다. 이때 CPU 개수만큼 워커 프로세스를 생성하고 마스터 프로세스와 워커 프로세스가 각각 수행해야 할 일들을 정리해서 구현하면 되는데 cluster mode 로 실행시킨다거나, 메모리가 넘친다거나, 오류로 인해 프로세스가 종료되는 등의 상황 등 고려해야 할 부분이 상당히 많습니다. 하지만 PM2를 이용하면 간단한 설정만으로도 이러한 처리를 쉽게 해결할 수 있습니다. 

 

 

1. PM2 패키지 설치

아래의 명령어를 실행하여 PM2 패키지를 설치합니다.

명령어 : npm install pm2 -g

PM2 패키지 설치

 

2. ecosystem.config.js 파일 생성

아래의 명령어를 이용하여 ecosystem.config.js 파일을 생성합니다.

명령어 : pm2 init

ecosystem.config.js 파일 생성

 

3. pm2 실행

ecosystem.config.js 파일을 아래와 같이 간단하게 작성하고 pm2 start명령어를 실행시키면 백엔드에서 프로세스를 실행시킵니다.

 

- ecosystem.config.js 파일

module.exports = {
  apps: [{
      name: 'nodeserver', //App name
      script: './app.js', //실행할 스크립트
      instances: 1, //CUP 코어 수 만큼 프로세스 생성(-1:코어수만큼 프로세스 생성)
      exec_mode: "cluster", //CPU 사용을 위한 클러스터 모드
      max_memory_restart: '300M', // 프로세스의 메모리가 300MB에 도달하면 reload 실행
      //bin폴더, routes폴더를 감시해서 변경사항 실행
      watch: [
        "bin",
        "routes"
      ],
      //해당폴더의 파일변경은 무시
      ignore_watch : [
        "node_modules"
      ],
  }]
};
명령어 : pm2 start

pm2 실행

 

4. pm2 모니터링

아래의 명령어를 이용해 pm2를 모니터링 할 수 있습니다.

명령어 : pm2 monit

 

5. pm2 종료

아래의 명령어를 이용해 pm2를 종료시킬 수 있습니다. 

명령어 : pm2 delete all
특정 프로세스를 delete 하고 싶을때는 pm2 delete -id 프로세스id 명령어를 사용하시면 됩니다.

 

6. CPU 코어 수 만큼 프로세스 만들어보기

ecosystem.config.js 파일에서 instances 값을 -1로 변경하고 pm2를 실행시킵니다. 저는 알리에서 구형제온 CPU를 구매하여 컴퓨터를 조립했기 때문에 15개까지 만들어졌습니다. 실제로 운영하실때는 처음부터 MAX로 하지마시고 CPU코어의 3/1이나 절반부터 사용하시면서 상황에 맞게 프로세스를 만드시기 바랍니다. 

CUP 코어 수 만큼 프로세스 만들기

 

여기까지 PM2를 이용한 Node.js 서비스 포스팅을 마치도록 하겠습니다.

 

반응형

+ Recent posts