티스토리 뷰

반응형

 

 

 

  Node.js를 서버를 운영하게 되면 고민되는 문제가 있습니다.
첫번째로 Node.js는 싱글 쓰레드로 동작하고 CPU의 단일 코어를 사용하기 때문에 멀티 코어 CPU를 사용하면 성능이 원하는 만큼 높아지지 않습니다.
두번째로는 서버에 에러가 발생 했을때 프로세스가 죽게 되어 서비스가 중단되게 됩니다. 이러한 문제들을 해소하기 위해 여러가지 관리 도구 들이 나왔는데 PM2도 Node.js의 프로세스를 관리하는 도구중 하나 입니다.

 

  이 포스팅에서는 PM2를 설치하고 기본적으로 알아야할 PM2의 기능들을 저리해 보겠습니다.

 

1. 설치

PM2 사용하려면 먼저 설치해 주어야 합니다. 기본적으로 node와 npm이 설치되어야 합니다.

설치는 npm or yarn 을 활용하여 간단히 설치 할 수 있습니다.

 

다음 명령어를 실행 합니다.

npm install pm2@latest -g

pm2는 설치가 완료되면 바로 사용이 가능 합니다.

 

2. 실행

 

pm2로 node.js 서버를 구동하는 방법은 매우 간단합니다.

pm2 start app.js --name "myapp"

# Specify an app name
--name <app_name>

# Watch and Restart app when files change
--watch

# Set memory threshold for app reload
--max-memory-restart <200MB>

# Specify log file
--log <log_path>

# Pass extra arguments to the script
-- arg1 arg2 arg3

# Delay between automatic restarts
--restart-delay <delay in ms>

# Prefix logs with time
--time

# Do not auto restart app
--no-autorestart

# Specify cron for forced restart
--cron <cron_pattern>

# Attach to application log
--no-daemon

 

실행된 서버를 pm2에서 관리하는 명령어는 아래와 같습니다.

pm2 restart <app_name> # 재시작
pm2 reload <app_name>  # 설정 다시 로드
pm2 stop <app_name>    # 중단
pm2 delete <app_name>  # 중단 및 리스트 삭제

 

app_name은 pm2의 구동된 프로세스 리스트를 확인하거나 처음 app.js를 실행할때 정의할 수 있습니다.

pm2 list

 

 

 

만약, 서버 구동시 자동으로 실행하는 스크립트를 생성하고 싶다면 아래 명령어를 실행하면 스크립트를 만들어 줍니다.

pm2 startup

 

 

 

명령어로 실행된 pm2를 config 파일로 만들고 싶다면 아래 명령어를 실행하여 다음 실행부터는 config 파일로 간단히 실행이 가능합니다.

pm2 ecosystem

 

3. 클러스터로 실행하기

 

 

https://pm2.keymetrics.io/

 

클러스터로 실행하게 되면 위 그림과 같이 CPU의 모든 코어를 사용하게 됩니다.

클러스터 모드를 실행하려면 아래 실행할때 아래 명령어를 추가 합니다.

pm2 start app.js -i max

max로 설정하게 되면 자동으로 사용할 수 있는 CPU를 확인하여 그에 맞는 개수를 설정합니다.

 

 

 

4. 로그 확인

pm2를 실행할 때 로그 Path을 설정도 하지만 지금 운영 중이 서버의 실시간 로그도 확인이 가능합니다.

pm2 logs

pm2 logs --lines 200

 

5. 터미널 대쉬보드

터미널로 확인 가능하 대쉬보드도 지원합니다.

pm2 monit

 

 

 

더 필요한 내용이 있다면 PM2 공식 홈페이지를 참조하세요

 

https://pm2.keymetrics.io/docs/usage/quick-start/

PM2 - Quick Start

Advanced process manager for production Node.js applications. Load balancer, logs facility, startup script, micro service management, at a glance.

pm2.keymetrics.io

 

반응형
댓글