PM2란?
PM2는 Node.js 애플리케이션을 관리하고 모니터링하기 위한 프로세스 매니저입니다. 서버 환경에서 Node.js 애플리케이션을 효율적으로 실행하고 유지하기 위해 널리 사용됩니다.
주요 기능
-
애플리케이션 관리
- 애플리케이션의 시작, 정지, 재시작, 삭제 등을 명령어로 간단하게 관리.
-
클러스터 모드
- 단일 서버에서 CPU 코어를 최대한 활용할 수 있도록 Node.js 애플리케이션을 여러 인스턴스로 실행.
-
자동 재시작
- 애플리케이션이 예기치 않게 종료되거나 충돌해도 자동으로 재시작.
-
로그 관리
- 애플리케이션의 stdout, stderr 로그를 파일로 저장하고 관리.
-
로드 밸런싱
- 클러스터 모드에서 애플리케이션에 대한 요청을 균등하게 분배.
-
환경 변수 설정
.env 파일이나 명령어를 통해 애플리케이션에 필요한 환경 변수를 손쉽게 설정.
-
모니터링
- 대시보드나 CLI에서 애플리케이션 상태(메모리 사용량, CPU 사용량 등)를 실시간으로 모니터링.
-
Watch 모드
- 파일 변경을 감지하여 애플리케이션을 자동으로 재시작.
PM2를 사용하는 이유
- Node.js 애플리케이션의 가용성(Availability)을 높이고, 다운타임을 최소화.
- 멀티 코어 서버에서 성능을 극대화.
- 복잡한 프로세스 관리를 단순화.
- 로그와 상태를 손쉽게 관리 및 모니터링.
기본 명령어
-
애플리케이션 실행
pm2 start app.js
-
애플리케이션 상태 확인
pm2 list
-
애플리케이션 재시작
pm2 restart app.js
-
애플리케이션 종료
pm2 stop app.js
-
로그 확인
pm2 logs
-
환경 변수와 함께 실행
pm2 start app.js --env production
PM2의 클러스터 모드 예시
CPU 코어 개수만큼 애플리케이션을 실행:
pm2 start app.js -i max
대안
- Forever: 단순히 애플리케이션을 실행하고 재시작하는 기능 제공.
- Docker: 컨테이너화된 환경에서 프로세스를 관리.
PM2는 Node.js 애플리케이션을 안정적으로 운영하고 싶을 때 가장 많이 선택되는 도구입니다.