YUMSERV
article thumbnail
Published 2022. 9. 4. 22:48
PM2 - nodejs 실행 LINUX
반응형

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

 

 

 

 


참고글)

https://inpa.tistory.com/entry/node-%F0%9F%93%9A-PM2-%EB%AA%A8%EB%93%88-%EC%82%AC%EC%9A%A9%EB%B2%95-%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0-%EB%AC%B4%EC%A4%91%EB%8B%A8-%EC%84%9C%EB%B9%84%EC%8A%A4

 

[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
profile

YUMSERV

@lena04301

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!