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