[CL] PM2 도입 이유 - 100-hours-a-week/6-nemo-wiki GitHub Wiki

1. pm2란?

pm2는 Node.js 기반의 프로세스 매니저로, 하나의 서버에서 여러 서비스를 안정적으로 실행하고 관리할 수 있게 도와주는 CLI 도구이다.

  • 백그라운드 실행
  • 앱 자동 재시작 (서버 재부팅, 예외 종료 시)
  • 로그 파일 관리 (pm2 logs)
  • 상태 모니터링 (pm2 list, pm2 monit)
  • 서버 부팅 시 자동 실행 등록 (pm2 startup)

2. 도입 배경

초기에는 npm start, java -jar, uvicorn 등으로 직접 실행했으며, 다음과 같은 문제가 있었다.

문제 기존 방식
터미널 종료 앱 종료
서버 재부팅 수동 재실행
에러 발생 자동 복구 불가
로그 확인 콘솔 출력만 가능
다수 서비스 운영 개별 실행 및 추적 필요

pm2 도입을 통해 서비스 실행 안정성, 운영 효율성, 모니터링/로그 관리를 개선함.

3. 설치 및 설정

# pm2 설치
sudo npm install -g pm2

# 서버 재부팅 시 자동 실행 등록
pm2 startup

# 현재 실행 상태 저장
pm2 save

4. 주요 명령어 정리

명령어 설명
pm2 start [script] 앱 실행
pm2 status 실행 중인 프로세스 상태 확인
pm2 logs [name] 실시간 로그 보기
pm2 restart [name] 앱 재시작
pm2 stop [name] 앱 일시 정지
pm2 delete [name] 앱 종료 및 목록 제거
pm2 save 현재 실행 상태 저장
pm2 startup 서버 부팅 시 자동 실행 등록
pm2 monit 대시보드 형태로 CPU, 메모리, 로그 상태 모니터링

5. 참고 사항

  • 로그 경로: /home/ubuntu/.pm2/logs/
  • 로그 롤링은 pm2-logrotate 별도 설치
  • pm2 monit은 실시간 대시보드로 운영 시 간편하게 상태 확인 가능