본문 바로가기

Programming/NodeJS

[NodeJS] pm2 를 통하여 NodeJS 프로세스 관리하기

작성자 : Deok


PM2는 P(Process) M(Manager) 2로 NodeJS 프로세서를 관리해주는 역할을 합니다. PM2는 앱이 계속 살아 있을 수 있도록 도와주는 역할을 하고 프로그램의 다운 없이 다시 로드 할 수 있도록 해주는 등의 역할을 합니다.



1. 설치하기

설치는 간단히 npm 을 이용함으로 npm install pm2 -g로 설치합니다.


$ npm install pm2 -g


2. 실행 및 종료하기


 실행 역시 간단합니다. pm2 start app.js 명령어 만으로 nodejs 프로젝트의 실행이 가능합니다.

$ pm2 start app.js



아래와 같이 여러개의 프로세서를 켜두고 작동을 볼수도 있습니다.



종료는 pm2 stop id 혹은 pm2 kill 로 해당 프로세스를 종료하거나 pm2 자체를 종료할수도 있습니다.


$ pm2 stop 0
$ pm2 kill

좀더 자세한 방법들은 아래에서 설명드리겠습니다.




3. 기본적인 사용방법들


 사용 관련 기능들이니 따로 설명 드리진 않겠습니다. 따라해보는게 더 좋을 것 같습니다.


리스트 보기

$  pm2 list





프로세스 관리 - 종료, 재시작, 삭제

$ pm2 stop     <app_name|id|'all'|json_conf>
$ pm2 restart  <app_name|id|'all'|json_conf>
$ pm2 delete   <app_name|id|'all'|json_conf>




프로세스 정보 보기

$ pm2 describe <id|app_name>




cluster 모드


* 클러스터 모드의 경우 아래의 그림이 가장 좋은 표현이라 생각해서 pm2 의 사이트에서 가져 왔습니다.


 보통 운영 시 nodejs 가 하나만 실행되어 머신의 성능을 전부 뽑아 내지 못하여 비효율적으로 운영되는데 cluster 모드를 이용하면 아래와 같이 여러 개의 nodejs 가 실행되면서 머신의 성능을 높은 수준까지 끌어낼 수 있습니다.
 

이미지 : http://pm2.keymetrics.io/docs/usage/cluster-mode/

$ pm2 start app.js -i 0 # 로드벨런스와 cluster 기능을 사용합니다.





PM2 를 이용하여 NodeJS 를 종료 하지 않고 리로드 하기

$ pm2 reload all




PM2 를 이용하여 앱 프로세스 숫자 조절 하기

$ pm2 scale <app_name> <instance_number> # 프로세스 숫자 늘리기 / 줄이기




PM2 를 이용하여 CPU / Memory 모니터링 하기

$ pm2 monit




PM2 실시간 로그 보기 - 실행중인 프로세스의 PM2 의 로그를 볼수 있습니다.

$ pm2 logs ['all'|'PM2'|app_name|app_id] [--err|--out] [--lines ] [--raw] [--timestamp [format]]



$ pm2 logs
$ pm2 logs WEB-API --err
$ pm2 logs all --raw
$ pm2 logs --lines 5
$ pm2 logs --timestamp "HH:mm:ss"
$ pm2 logs WEB-API --lines 0 --timestamp "HH:mm" --out
$ pm2 logs PM2 --timestamp

$ pm2 flush          # 모든 로그 삭제하기

pm2 로그관련 추가정보 링크 : http://pm2.keymetrics.io/docs/usage/log-management/


자동시작 스크립트 생성하기 - 간단히 OS 별 자동 시작 스크립트를 만드는 방법 입니다.

$ pm2 startup
# 플렛폼을 적어 주지 않으시면 자동으로 플렛폼을 감지합니다.

$ pm2 startup [platform]
# 플렛폼을 적어주시면 해당 플렛폼 스크립트가 적용
#   ubuntu|centos|redhat|gentoo|systemd|darwin|amazon

#프로세스 리스트 저장하기
$ pm2 save

# -u 옵션을 이용하여 자동시작 사용자 지정하기
$ pm2 startup ubuntu -u www-data


각 플렛폼 별로 스크립트 파일및 적용 방법이 다르니 아래의 추가 정보 링크를 참고하시기 바랍니다.


자동시작 관련 추가정보 링크 : http://pm2.keymetrics.io/docs/usage/startup/



PM2 개발자 모드 - Development Mode


PM2 에서 지원하는 개발자 모드를 이용하는 방법 입니다. 파일 변경 및 로그를 실시간으로 보여 주고 파일 변경시 변경을 감지하여 자동으로 재시작 해줍니다.

$ pm2-dev run my-app.js



 대략적으로 PM2 사용방법 들에 대해 알아봤습니다.

 

추가적으로 pm2 에서 자체적으로 웹 gui 형식으로 모니터링을 제공하고 있습니다. 관심 있으신분은 아래의 URL 을 참고 하시면 될 것 같습니다.


https://pm2.io/



즐거운 개발 & 운영 되시기 바랍니다.