노드는 기본적으로 싱글스레드라 단일 코어에서 실행되기 때문에 멀티 코어 시스템을 사용할 수 없는 단점이 있다.
단일 코어에서만 돈다면 8코어 16 코어에서 돌지 못할 것인가? 하지만 노드에서는 클러스터 모듈을 통해 단일 프로세를 멀티 프로세스로 늘릴 수 있게 제공.
클러스터 모듈을 통해 마스터 프로세스
에섯 CPU 코어 수 만큼 워커 프로세스를 생성하여 모든 코어를 사용할 수 있게한다.
위의 클러스터 모듈을 사용해서 어떻게 무중단 서비스를 구성할 수 있을까? 그 방법은 PM2라는 Nodejs 프로세스 매니저를 사용해 가능합니다.
npm을 통해 설치
$ npm install -g pm2@latest
기본으로 작성된 app.js를 pm2로 기동하는 경우 아래와 같이 명렬어를 입력해 기동할 수 있다.
옵션없이 fork 모드로 어플리케이션을 실행
$ pm2 start app.js
//ecosystem.config.js
module.exports = {
apps: [{
name: 'app',
script: './app.js', // 실행할 파일
instances: 0, // 0은 코어수 만큼 프로세스를 생성
exec_mode: ‘cluster’
}]
}
$ pm2 start pm2.config.js
reload
명령서 사용