본문 바로가기

Back-end/JS

[JS] pm2 사용법

Process Manager 2

PM2로 불리우는 프로세스매니저는 forever기능과 nodemon의 변경감지 재시작 그리고 클러스트와 로그를 제공한다.

시작하기

기본 사용법

pm2 list
 
┌──────────────┬────┬─────────┬──────┬────────┬─────────┬────────┬─────┬────────────┬──────────┐
│ App name     │ id │ mode    │ pid  │ status │ restart │ uptime │ cpu │ mem        │ watching │
├──────────────┼────┼─────────┼──────┼────────┼─────────┼────────┼─────┼────────────┼──────────┤
│ hanguelhouse │ 0  │ cluster │ 5184 │ online │ 1       │ 4s     │ 0%  │ 110.6 MB   │ disabled │
└──────────────┴────┴─────────┴──────┴────────┴─────────┴────────┴─────┴────────────┴──────────┘
 
 

현재 실행중인 리스트를 확인할 수 있습니다.

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

한번 start로 실행을 할 경우 list에 남아있으므로 다시 start 명령어로 할 필요가 없습니다.
(start 명령어로 할경우 2개의 instance가 실행됩니다)

재시작할경우 pm2 restart를 사용하여주세요.

모니터링 및 로그

pm2 monit

현재 서버에서 실행중인 instace의 cpu 및 메모리 사용량을 확인할 수 있습니다.

$ 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 list
 
//
pm2
pm2 start app.js // 백그라운드 실행
pm2 list //현재 실행중인 리스트 출력
 
pm2 start    <app_name|id|'all'|json_conf>
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> //프로세스 정보
 
pm2 scale <app_name> <instance_number> // 프로세스 숫자 조절하기(스케일링)
 
pm2 monit //cpu 및 메모리 확인
 
pm2 logs ['all'|'PM2'|app_name|app_id] [--err|--out] [--lines ] [--raw] [--timestamp [format]] //실시간 원격 로그 스트리밍

현재 에러나 내용 자세히
몇번 재시작 되는지도 확인 가능

pm2 desc <app_name|id|'all'|json_conf>

특정 로그만 출력 가능

$ pm2 logs
$ pm2 logs WEB-API --err //web-api 에러만 출력
$ pm2 logs all --raw //전체 모든 에러 출력
$ pm2 logs --lines 5 //5줄만 출력
$ pm2 logs --timestamp "HH:mm:ss" //특정 시간 로그만 보기
$ pm2 logs WEB-API --lines 0 --timestamp "HH:mm" --out
$ pm2 logs PM2 --timestamp
 
$ pm2 flush          # 모든 로그 삭제하기