0. PM2란
nodejs 프로세스 매니져
기본적으로 nodejs는 싱글스레드입니다. nodejs 애플리케이션은 단일 CPU코어에서 실행되기 때문에 CPU 멀티코어 시스템은 사용할 수 없습니다. 클러스터 모듈을 통해 단일 프로세스를 멀티 프로세스(Worker)로 늘릴 수 있는 방법을 제공합니다. 개발자분들은 이 클러스터 모듈을 사용해서 마스터 프로세스에서 CPU 코어 수 만큼 워커 프로세스를 생성해서 모든 코어를 사용하게끔 개발하면 됩니다.
PM2 공식 사이트 : https://pm2.keymetrics.io/
1. PM2 설치
npm install pm2 -g
PM2 테스트 페이지
cat test.js
/* app.js */
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('<h1>Hello World!</h1>');
});
app.listen(3000, () => {
console.log('pm2 서버 시작');
});
테스트 페이지 실행되는지 확인
node test.js
아래와 같은 에러메시지가 뜰 경우, 해당 패키지를 설치합니다.
Error: Cannot find module 'express'
-> npm install express
2. PM2 사용법
PM2를 이용해서 nodejs파일을 실행하게 되면 default 설정인 Fork모드로 돌아가게 됩니다.
PM2 실행
pm2 start 파일명
PM2 실행 옵션
--watch : pm2가 실행된 프로젝트의 변경사항을 감지하여 서버를 자동 재시작
-i (코어갯수) : nodejs 클러스터 모드 설정. max로 입력하게 되면 최대 코어갯수로 클러스터링이 됩니다
--name : 앱 이름 설정
--max-memory-restart <메모리MB> : 앱이 리로드 될때 최대 메모리 지정
--log <log_path> : 로그파일 경로 지정
-- arg1 arg2 arg3 : 스크립트에 인수 전달
--restart-delay <delay in ms> : 재시작할때의 딜레이 지정
--time : 로그남길때 시간지정
--no-autorestart : 재시작 불가하도록 설정
--cron <cron pattern> : 주기적으로 강제 재시작이 필요할때 설정
PM2 프로세스 증설
pm2 프로세스 갯수를 늘리거나 줄여야할 때 pm2 scale 명령어로 증설/감소 시켜줄 수 있다.
# test 프로세스 한개 증설
pm2 scale test +1
# test 프로세스 2개로 고정
pm2 scale test 2
PM2 stop
pm2 stop 파일명
PM2 RESTART
pm2 restart 파일명
PM2 RELOAD
pm2 reload 파일명
PM2 LOG
pm2 log
PM2 MONIT
pm2 실행한 서버들 MONIT 명령어로 cpu,memory, log 등 실시간 상태를 볼 수 있다.
pm2 monit
PM2 SHOW
앱에 대한 정보를 볼 수 있다.
pm2 show 파일명
PM2 SAVE
pm2 저장
pm2 status 했을 때, 리스트에 있는 내용들을 dump파일 형태로 저장.
dump 저장위치 : /root/.pm/dump.pm2
pm2 save
PM2 RECURRECT
pm2 복구
pm2를 구동하고 있는 서버가 리부팅 되었을 경우, 기존에 있는 pm2 list들이 사라집니다.
pm2 save 명령어를 통해서 dump파일로 저장되어 있다면, pm2 recurrect 명령어를 통해서 dump파일에 있는 내용들을 가져와 list로 불러옵니다.
pm2 recurrect
참고글)
https://dydals5678.tistory.com/100
https://darrengwon.tistory.com/712
'LINUX' 카테고리의 다른 글
Core파일 생기지 않는 경우 (0) | 2022.02.04 |
---|