0. PM2란
nodejs 프로세스 매니져
기본적으로 nodejs는 싱글스레드입니다. nodejs 애플리케이션은 단일 CPU코어에서 실행되기 때문에 CPU 멀티코어 시스템은 사용할 수 없습니다. 클러스터 모듈을 통해 단일 프로세스를 멀티 프로세스(Worker)로 늘릴 수 있는 방법을 제공합니다. 개발자분들은 이 클러스터 모듈을 사용해서 마스터 프로세스에서 CPU 코어 수 만큼 워커 프로세스를 생성해서 모든 코어를 사용하게끔 개발하면 됩니다.
PM2 공식 사이트 : https://pm2.keymetrics.io/
PM2 - Home
Advanced process manager for production Node.js applications. Load balancer, logs facility, startup script, micro service management, at a glance.
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
참고글)
[NODE] 📚 PM2 모듈 사용법 - 클러스터 / 무중단 서비스
Node.js 싱글 스레드 Node.js는 Chrome의 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임(runtime)으로 ‘Event Driven’, ‘Non-Blocking I/O’ 모델을 사용해 가볍고 성능이 뛰어나 높은 평가를 받고 있.
inpa.tistory.com
https://dydals5678.tistory.com/100
NODE JS - PM2 패키지 설치
◎ PM2 란? ▼ node js를 실행하는 프로세스를 제어할수있다. 다중으로 실행 , 끄기 , 강제로종료해도 프로세스가 다시살아나기 등등을 할수 있는 패키지이다 ◎ PM2 패키지 설치법 ▼ 내용. npm
dydals5678.tistory.com
https://darrengwon.tistory.com/712
pm2 이용 및 로그 기록 살피기
pm2 도입이유 노드는 싱글 스레드이다. 즉, cpu 코어를 하나만 쓰는 셈이다. 서버 컴퓨터의 cpu 코어를 하나만 쓰는 경우는 없다. 굉장히 작은 서버도 최소 코어 4개는 사용해야 한다. 또, 우리가 사
darrengwon.tistory.com
'LINUX' 카테고리의 다른 글
Core파일 생기지 않는 경우 (0) | 2022.02.04 |
---|