PM2로 Node.js 서버 관리 및 자동 재시작 설정

PM2는 Node.js 애플리케이션을 효과적으로 관리할 수 있는 강력한 프로세스 관리자입니다. 서버 운영 시 자동 재시작, 로드 밸런싱, 로그 관리, 모니터링 등의 기능을 제공하여, 개발자가 보다 안정적으로 애플리케이션을 운영할 수 있도록 돕습니다.

이 글에서는 PM2의 개념과 사용법을 코드 예제와 함께 자세히 설명하겠습니다.

1. PM2란?

PM2는 Node.js 프로세스 매니저로, 애플리케이션을 자동으로 실행하고 관리하는 기능을 제공합니다. 특히 서버가 갑자기 종료되거나 충돌하는 경우에도 자동으로 재시작할 수 있는 기능이 강점입니다.

📌 PM2의 주요 기능

  • 애플리케이션 자동 재시작: 서버가 다운되더라도 자동으로 재시작하여 가동 중단을 최소화합니다.
  • 백그라운드 실행: 터미널을 닫아도 서버가 계속 실행됩니다.
  • 로드 밸런싱 지원: 여러 개의 CPU 코어를 활용하여 성능을 최적화할 수 있습니다.
  • 실시간 모니터링: CPU, 메모리 사용량, 실행 상태 등을 쉽게 확인할 수 있습니다.
  • 로그 관리: 애플리케이션의 실행 로그를 저장하여 추후 디버깅을 쉽게 할 수 있습니다.

2. PM2 설치하기

PM2는 전역 패키지로 설치할 수 있습니다. 다음 명령어를 실행하세요.

npm install pm2 -g

설치가 완료되면 pm2 -v 명령어로 버전을 확인할 수 있습니다.

pm2 -v

3. PM2로 서버 실행하기

예제 애플리케이션(app.js)이 있다고 가정하고, PM2로 실행해보겠습니다.

기본 실행

pm2 start app.js

실행된 애플리케이션 확인

pm2 list

위 명령어를 실행하면 현재 실행 중인 프로세스 목록이 표시됩니다.

4. 자동 재시작 설정하기

서버 코드가 변경될 때 자동으로 재시작하도록 설정하려면 --watch 옵션을 추가합니다.

pm2 start app.js --watch

이제 파일이 수정되면 PM2가 자동으로 애플리케이션을 재시작합니다.

5. PM2 프로세스 관리

명령어 설명
pm2 list 실행 중인 애플리케이션 목록 확인
pm2 stop <id or name> 특정 애플리케이션 중지
pm2 restart <id or name> 애플리케이션 재시작
pm2 delete <id or name> 애플리케이션 삭제
pm2 logs 실행 로그 확인

6. 시스템 재부팅 후 자동 실행 설정

PM2가 시스템 재부팅 후에도 자동으로 애플리케이션을 실행하도록 설정하려면 다음 명령어를 실행하세요.

pm2 startup

이 명령어는 시스템 부팅 시 PM2를 자동 실행하는 스크립트를 생성합니다. 그런 다음 현재 실행 중인 프로세스를 저장합니다.

pm2 save

이제 서버가 재부팅되더라도 PM2가 자동으로 애플리케이션을 실행합니다.

7. PM2 클러스터 모드 사용하기 (멀티 코어 활용)

PM2는 여러 개의 CPU 코어를 활용할 수 있도록 클러스터 모드를 지원합니다.

pm2 start app.js -i max

-i max 옵션을 사용하면 시스템의 모든 CPU 코어를 활용하여 서버를 실행합니다. 이렇게 하면 높은 트래픽을 처리할 수 있습니다.

8. PM2 설정 파일 사용하기

PM2 설정 파일을 사용하면 여러 개의 애플리케이션을 쉽게 관리할 수 있습니다. ecosystem.config.js 파일을 생성하여 다음과 같이 설정합니다.

module.exports = {
  apps: [
    {
      name: "my-app",
      script: "app.js",
      instances: "max",
      exec_mode: "cluster",
      watch: true,
      env: {
        NODE_ENV: "production",
      },
    },
  ],
};

파일을 저장한 후 다음 명령어를 실행하여 설정을 적용합니다.

pm2 start ecosystem.config.js

9. PM2 사용 시 유용한 팁

  • 메모리 사용량을 확인하려면 pm2 monit을 사용하세요.
  • 특정 시간마다 애플리케이션을 자동 재시작하려면 pm2 restart app.js --cron "0 0 * * *"을 사용하세요 (매일 자정에 재시작).
  • PM2를 완전히 제거하려면 npm uninstall pm2 -g를 실행하세요.

결론

PM2는 Node.js 서버를 안정적으로 운영하는 데 필수적인 도구입니다. 자동 재시작, 로드 밸런싱, 로그 관리 등의 기능을 통해 개발자는 서버 운영 부담을 줄이고 애플리케이션의 가용성을 극대화할 수 있습니다.

이제 PM2를 활용하여 안정적인 Node.js 서버를 구축해보세요! 🚀

Leave a comment