지난번 포스팅에서는 백그라운드에서 서버를 켜는 방법에 대해 포스팅했었습니다.
2021.07.02 - [Back-End/Node.js] - [Node.js] 서버 백그라운드로 실행하기 (npm forever)
그런데 Node.js는 싱글 스레드를 사용한다는 점을 알았고
PM2를 활용하면 하이퍼 스레딩을 통한 클러스터링이 가능하다는 점을 알았습니다.
본 포스팅에서는 해당 내용을 다뤄보려고 합니다.
1. PM2 란?
Process Manager: 이름 그대로 프로세스를 관리해주는 모듈입니다.
2. PM2 설치
npm install -g pm2
npm으로 간편하게 설치해주도록 합시다.
3. PM2 사용법
3-1. 서버 실행
pm2 start <fileName>
위 명령어로 서버를 실행할 수 있습니다.
수동으로 프로세스를 죽이거나 에러가 발생하지 않는 한 서버는 죽지않습니다.
아무런 옵션없이 서버를 실행 시키면 기본 모드인 fork로 서버가 실행됩니다.
이렇게 되면 이전과 똑같이 싱글 스레드로 서버가 구동되기 때문에 클러스터 모드로 실행해야합니다.
pm2 start <fileName> -i max
-i max 옵션을 주게되면 PC가 가진 모든 코어를 사용하게 됩니다.
저는 8개의 CPU 코어를 가지고 있기 때문에 총 8개의 코어를 사용하며, mode를 보면 cluster로 표기되는 것을 볼 수 있습니다.
모든 코어를 다 사용하기 부담스럽다 혹은 필요 이상의 코어를 사용하고 있다.
라는 생각이 드는 경우 max가 아닌 코어 수를 지정해주면 됩니다. (ex. -i 4)
pm2 start app.js -i max --watch
추가적으로 서버 실행 시 --watch 옵션을 넣어준다면 프로젝트 변경사항을 감지하여 서버를 자동으로 리로드를 해줍니다.
3-2. 실행중인 pm2 목록 확인
pm2 list
위 명령어를 실행하면 pm2로 시작한 서버들 리스트를 조회할 수 있습니다.
3-3. pm2 종료
pm2 kill
실행중인 서버를 종료하고 싶은 경우 위 명령어를 실행하면 모두 종료됩니다.
pm2 del <pid> or <AppName>
특정 프로세스만 종료하고싶은 경우엔 해당 pid만 종료해주면 됩니다.
3-4. pm2 모니터링
pm2 monit
3-5. 실시간 로그 확인
pm2 logs <AppName>
3-4의 모니터로 볼 경우 텍스트가 길면 잘리는 현상이 있어서 이렇게 확인 가능합니다.