본문으로 바로가기

PM2 를 이용하여 NodeJS 프로세스 관리하기

category Dev Languages/NodeJS 2015.10.02 18:00



 PM2는 P(rocess) M(anager) 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 를 이용한 로드 벨런싱


* 로그벨런스의 경우 NodeJS v0.10.*  버전의 클러스터 모듈을 지원하지 않습니다. v0.11.16 혹은 v0.12.0 이상의 버전을 이용해 주셔야 합니다.


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




PM2 클러스터링 추가정보 확인하기 : https://keymetrics.io/2015/03/26/pm2-clustering-made-easy/


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


$ pm2 reload all





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


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





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 사용방법 들에 대해 알아봤습니다.


 추가적으로 웹 GUI 모니터링 을 제공하는 Keymetrics 모니터링 이라는 서비스가 있습니다. 이곳에서 pm2 를 등록하여 서버 상태등을 볼수있는 서비스를 제공합니다. 





아직 사용해보지는 못했지만 아래는 가격 정보입니다. 



필요 하신분들께는 유용한 서비스 일것 같습니다.


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



저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

댓글을 달아 주세요

  1. ceo머키 2017.07.24 02:16 신고

    좋은 글 감사합니다. 덕분에 pm2에 대해서 제대로 알 수 있었네요!

튜토리얼북
블로그 이미지 눈싹 님의 블로그
VISITOR 오늘450 / 전체536,600