PM2 - 설치 및 명령어

namkun·2022년 4월 6일
0

서버개발

목록 보기
6/7

팀내에서 배포도 담당하고 있다보니, Node js를 해당 플러그인으로 무중단 배포 세팅을 해달라는 요청을 받았다.

설치

$ npm install pm2@latest -g
# or
$ yarn global add pm2	

앱 시작

$ pm2 start *.js # default
$ pm2 start *.sh / *.py / binary-file... # 여러가지 포맷의 파일 지원
  • 기본 명령어로 pm2를 이용해 앱을 실행한다면 fork모드로 설정되어서, 단일 인스턴스는 단일 스레드로 실행되는 Node의 특징을 따르게 된다.
  • pm2 에서는 Cluster 모드도 사용가능하다. 관련하여 알고 싶다면 여기를 참조해보자!

CLI 로 전달가능한 옵션들

# 앱 이름 지정
--name <app_name>

# 항상 모니터링하다가, 관련해서 파일이 변경되면 앱 재시작
--watch

# watch옵션시에 특정 폴더 경로는 무시해야할 때 (log 폴더 지정하면...이거 이용해서 제거해주자. 아니면 무한 재실행을 볼 수 있다.)
--watch --ignore-watch="[dir]/*"

# 앱이 리로드 될때 최대의 메모리 지정
--max-memory-restart <200MB>

# 로그 파일 패스 지정
--log <log_path>

# 스크립트에 추가 인수 전달
-- arg1 arg2 arg3

# 재시작할때의 딜레이 지정
--restart-delay <delay in ms>

# 로그 남길때 프리픽스로 시간 지정
--time

# 재시작 불가하도록 설정
--no-autorestart

# 주기적으로 강제 재시작이 필요할때 설정 (cron)
--cron <cron_pattern>

# Attach to application log
--no-daemon

앱 관리

$ pm2 restart app_name # 프로세스 종료하고 재시작
$ pm2 reload app_name # 프로세스 종료없이 재시작
$ pm2 stop app_name # 프로세스 스탑
$ pm2 delete app_name # 프로세스 삭제
  • app_name 대신에 all, id를 넣을 수 있다.
    • all : 모든 프로세스 대상
    • id : 특정 프로세스 대상

모니터링

$ pm2 status
$ pm2 ls
$ pm2 list
$ pm2 prettylist # json 
$ pm2 monit

해당 명령어를 치면 현재 실행중인 프로세스에 대해서 모니터링이 진행가능하다.

다른 명령어들과 다르게, monit 명령어는 실시간 상태를 확인할 수 있는 모니터링 창을 열어준다.

Scale

Scale 관리

# 프로세스 4개 늘리기
$ pm2 scale app +4
# 프로세스 4개 줄이기
$ pm2 scale app -4
# 프로세스 4개로 설정하기
$ pm2 scale app 4

Log

pm2 에서 진행중인 프로세스에 대해서 로그를 확인하고 싶다면 다음 명령어를 사용하면 된다.

# all
$ pm2 logs

# specific process log
$ pm2 logs [process name | process id]

# lines option
$ pm2 logs --lines 200

Log Rotate

pm2에서 Log Rotate 관리를 위해서는 pm2-logrotate 플러그인을 설치하면 됩니다.

# npm으로 설치하는 것이 아닌 pm2로 설치
$ pm2 install pm2-logrotate

# 옵션 설정은 다음과 같이 설정
$ pm2 set pm2-logrotate:<option> <value>

Options

  • max_size: 로그 파일 사이즈 제한 크기 (기본값은 10M)
  • retain: 로그 파일을 최대 몇개까지 가지고 있을 것인지 설정 (기본값은 30개)
  • compress: 로그 파일을 gzip으로 압축할 것인지 여부 (기본값은 false)
  • dateFormat: 로그 파일 날짜 폼새 (기본값은 YYYY-MM-DD_HH-mm-ss)
  • workerInterval: 로그 파일 사이즈를 확인하는 1초마다의 회수 (기본값 초당 30회)
  • rotateInterval: cron job (기본값은 '0 0 * * *')

Update

# update pm2 
$ npm install pm2@latest -g
$ pm2 update
  • 두 명령어 모두 실행해야한다.

참고

https://pm2.keymetrics.io/docs/usage/quick-start/
https://velog.io/@altmshfkgudtjr/PM2-Node.js-%EB%AC%B4%EC%A4%91%EB%8B%A8-%EC%84%9C%EB%B9%84%EC%8A%A4

profile
개발하는 중국학과 사람

0개의 댓글