PM2: Node.js 애플리케이션을 위한 프로세스 매니저

PM2: Node.js 애플리케이션을 위한 프로세스 매니저
Photo by Growtika / Unsplash

On this page

PM2는 Node.js 애플리케이션을 위한 프로덕션 레벨의 프로세스 관리자입니다. 서버 재부팅 후에도 애플리케이션을 계속 실행할 수 있게 하고, 프로세스 모니터링, 로깅, 클러스터링 등 다양한 기능을 제공합니다. 특히, 실시간 프로세스 관리자동 재시작을 통해 안정적인 서버 운영을 돕습니다.


주요 특장점

1. 프로세스 관리

  • PM2는 서버에서 실행되는 Node.js 애플리케이션백그라운드에서 실행하며, 각 프로세스의 상태를 쉽게 모니터링할 수 있습니다.
  • 자동 재시작: 애플리케이션이 크래시하면 자동으로 재시작해줍니다.
  • 자동 재부팅: 서버가 재부팅될 때, PM2는 애플리케이션을 자동으로 다시 시작합니다.

2. 클러스터 모드

  • PM2는 클러스터 모드를 제공하여 여러 CPU 코어에서 로드 분산을 자동으로 처리합니다. 이 기능을 통해 성능을 최대한 활용할 수 있습니다.

3. 실시간 로그 및 모니터링

  • PM2는 실시간 로그를 제공하여 현재 프로세스의 상태와 로그를 즉시 확인할 수 있습니다.
  • pm2 monit 명령어를 통해 실시간으로 메모리, CPU, 프로세스 상태 등을 모니터링할 수 있습니다.

4. 배포 관리

  • PM2는 배포 환경에서도 사용 가능하며, 자동화된 배포와 롤백 등의 기능을 지원합니다.

5. 유연한 구성 및 통합

  • ecosystem.config.js 파일을 통해 다중 애플리케이션을 관리하거나, 특정 스크립트, 포트, 환경 설정 등을 미리 정의할 수 있습니다.

PM2 설치

npm install pm2 -g

이 명령어로 PM2를 전역으로 설치한 후, 애플리케이션 관리를 시작할 수 있습니다.


자주 사용하는 명령어

1. 애플리케이션 시작

pm2 start app.js

이 명령어는 app.js 파일을 백그라운드에서 실행합니다.

npm/yarn 명령어 사용:

pm2 start yarn --name "app-name" -- start

2. 프로세스 목록 보기

pm2 list

현재 실행 중인 모든 프로세스의 상태를 확인할 수 있습니다.

3. 프로세스 재시작

pm2 restart app-name

프로세스 이름 또는 ID로 재시작할 수 있습니다.

4. 프로세스 종료

pm2 stop app-name

애플리케이션을 종료합니다.

5. 프로세스 삭제

pm2 delete app-name

프로세스를 종료하고 PM2에서 제거합니다.

6. 애플리케이션 로그 확인

pm2 logs

애플리케이션의 실시간 로그를 확인할 수 있습니다.

7. 애플리케이션 상태 모니터링

pm2 monit

메모리, CPU 사용량 및 프로세스 상태를 실시간으로 모니터링할 수 있습니다.

8. PM2 상태 저장 및 자동 재시작 설정

서버 재부팅 후 자동 재시작 설정:

pm2 startup

현재 상태 저장:

pm2 save

이 명령은 서버가 재시작되면 PM2가 자동으로 시작되도록 설정합니다.


PM2의 장단점

장점

  • 자동 재시작: 애플리케이션이 중단되었을 때 자동으로 다시 시작되므로 서비스 중단을 방지합니다.
  • 클러스터 모드: 여러 CPU 코어를 활용하여 애플리케이션의 성능을 극대화합니다.
  • 쉬운 모니터링: 실시간으로 프로세스를 관리하고 로그를 확인할 수 있어 문제를 빠르게 해결할 수 있습니다.
  • 간편한 배포: 여러 애플리케이션을 동시에 관리할 수 있으며, 설정 파일을 통해 자동화된 배포 프로세스를 지원합니다.

단점

  • 리소스 소비: 백그라운드에서 실행되므로, 대규모 애플리케이션에서는 리소스가 추가로 소모될 수 있습니다.
  • 초기 설정: 다중 애플리케이션 및 복잡한 설정이 필요한 경우, 처음에는 설정이 다소 복잡할 수 있습니다.

결론

PM2는 안정적인 Node.js 애플리케이션 관리를 위한 훌륭한 도구로, 자동화, 모니터링, 클러스터링 등 다양한 기능을 제공하여 프로덕션 환경에서도 안정적으로 애플리케이션을 운영할 수 있도록 도와줍니다. 쉽고 유연한 설정으로 작은 프로젝트부터 대규모 서비스까지 적용 가능하며, 특히 장기적으로 안정성과 모니터링이 중요한 환경에서 큰 장점을 발휘합니다.

Subscribe to Keun's Story newsletter and stay updated.

Don't miss anything. Get all the latest posts delivered straight to your inbox. It's free!
Great! Check your inbox and click the link to confirm your subscription.
Error! Please enter a valid email address!