안녕하세요? 지나가던 웹개발자입니다 :)
Node.js는 원래 싱글쓰레드이기 때문에 단일 CPU 코어에서 실행됩니다. 서버가 멀티 코어일 경우 CPU의 성능을 최대로 활용할 수 없는 것이죠. 이런 문제를 해결하기 위해서는 클러스터 모듈을 통해 여러 마스터 프로세스와 여러 워커 프로세스를 클러스터로 관리할 수 있는 방법을 제공합니다. 다만 워커 프로세스들을 직접 구현하는 것은 생각보다 신경써야할 점이 많습니다.
PM2 는 Node.js 진영에서 가장 널리 쓰이는 프로세스 매니져입니다. 클러스터 모드를 지원해서 위에 말씀드린 CPU를 성능을 효과적으로 활용할 수 있습니다. 또한 예기치 못한 오류나 메모리 리미트 초과로 갑작스럽게 프로세스가 종료되어도 자동으로 재시작해주는 등의 관리 기능을 제공합니다.
$ pm2 start [APP NAME] // 앱 시작
$ pm2 stop [APP NAME] // 앱 종료
$ pm2 list // 프로세스 목록
$ pm2 monit // 프로세스별 실시간 로그 모니터링
$ pm2 show [APP NAME] // 앱 상세 정보
$ pm2 scale [APP NAME] [COUNT] // COUNT 만큼 스케일 업, 다운
PM2는 위에 소개해드린 것 외에도 굉장히 많은 기능이 있습니다. 자세한 내용은 공식 문서 를 확인해보세요.
감사합니다. :-)