인프라

PM2 살펴보기

Ramda 2025. 2. 18. 13:46

Overview

Node js로 제작한 홈페이지를 AWS 상에서 서버를 돌려야하는 상황이 생긴다면, 항상 관리를 수동으로 할 수는 없다. Node 진영에는 프로세스 매니저인 PM2가 존재하고 있으므로 이것을 살펴보고 실제 적용시키도록 하자.

PM2가 필요한 이유?

노드는 기본적으로 싱글 스레드로 동작한다. 노드 애플리케이션은 단일 CPU에서 돌아가기 때문에 CPU의 멀티코어 시스템은 사용할 수 없다. 싱글 스레드의 단점이 모든 코어를 사용하지 못해 최대 성능을 내지 못하는 경우가 생기는 것이다.

그래서 노드는 클러스터 모듈을 통해 단일 프로세스를 멀티 프로세스로 늘리는 방법을 제공한다.

하지만 클러스터를 사용하는 방법도 완벽하게 자동 매니지먼트가 되진 않는다. 따라서 이런 최적화 작업들을 직접 구현하는 것보다 솔루션을 사용해 문제를 해결하는 방법이 더 효율적이다.

그리하여 노드 진영의 프로세스 매니저인 PM2를 사용한다.

PM2란?

PM2는 Process Manager 2의 약자로 서버운영 패키지이다.

PM2는 다음과 같은 대표 기능이 있다.

  • 서비스 동작 중 서버가 다운되도 서버를 다시 켜준다.
  • 싱글 스레드 기반인 노드를 멀티 코어 or 하이퍼 스레딩을 사용할 수 있게 해준다.
  • 로드밸런싱 기능을 가지고 있다.
  • 원격으로 프로세스 모니터링 및 관리

PM2는 단점도 가지고 있다.

멀티 스레딩이 아니므로 서버의 메모리 같은 자원을 공유하지 못한다.

이 문제 때문에 레디스(Redis)같은 서비스를 사용한다.

PM2 설치 및 사용법

PM2 설치

npm이나 yarn을 사용해 설치를 한다.

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

PM2 실행 및 실행 옵션

$ pm2 start app.js //일반적으로 app.js이 실행파일이므로

# 이름을 지정하여 변경하고 싶을 때
--name <app_name>

# PM2가 실행된 프로젝트의 변경사항을 감지하여 서버를 자동 재시작(reload)
--watch

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

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

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

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

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

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

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

#  Node.js의 싱글 스레드를 보완하기 위한 클러스터(Cluster) 모드
-i max(core cnt)

PM2 Managing processes 명령어

$ pm2 restart app_name 

$ pm2 reload app_name

$ pm2 stop app_name #중지

$ pm2 delete app_name #삭제

PM2 log 및 모니터링

$ pm2 log # 전체 프로세스 로그 보기

$ pm2 log [process name | process id] # 특정 프로세스 로그 보기

$ pm2 log --lines 200 # 200줄 까지만 보기

$ pm2 log --err 200 # 에러 로그만 보기

$ pm2 monit

Reference

 

A Complete Guide to Node.js Process Management with PM2 | AppSignal Blog

This in-depth guide runs you through the key features of Node.js process manager PM2.

blog.appsignal.com

 

 

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