<

카테고리 없음

pm2 cheat sheet

hanseongjun 2025. 7. 24. 03:56
728x90
반응형

PM2는 Node.js 애플리케이션의 프로세스를 관리하고, 서버가 예기치 않게 종료되었을 때 자동으로 재시작해주며, 부하 분산을 위한 클러스터링, 로그 관리 등 다양한 편의 기능을 제공합니다. Master께서 개발 중인 서비스를 안정적으로 운영하고, 중단 없는 서비스를 지향하신다면 PM2는 필수적인 도구라고 할 수 있습니다.

PM2로 Node.js Express 서버 실행하기 (Cheat Sheet)

PM2는 먼저 npm이나 yarn을 통해 글로벌로 설치해야 합니다.

npm install pm2 -g
# 또는
yarn global add pm2

기본 명령어 (Basic Commands)

명령어 설명
pm2 start [app.js] app.js 파일을 실행하여 새로운 프로세스를 시작합니다.
pm2 start [app.js] --name [앱이름] 프로세스의 이름을 지정하여 시작합니다. (예: pm2 start app.js --name my-api)
pm2 list 현재 PM2가 관리하고 있는 모든 프로세스 목록을 표시합니다.
pm2 stop [ID 또는 이름] 특정 프로세스를 중지합니다. (예: pm2 stop 0 또는 pm2 stop my-api)
pm2 restart [ID 또는 이름] 특정 프로세스를 재시작합니다.
pm2 delete [ID 또는 이름] 특정 프로세스를 목록에서 삭제합니다.
pm2 stop all 모든 프로세스를 중지합니다.
pm2 delete all 모든 프로세스를 목록에서 삭제합니다.

💡 활용 예시: Master께서 개발하신 Express 서버의 메인 파일이 server.js라고 가정해 보겠습니다. pm2 start server.js --name backend-api 명령어로 서버를 실행하면, PM2가 해당 프로세스를 'backend-api'라는 이름으로 등록하고 백그라운드에서 실행시킵니다. 터미널을 종료해도 서버는 계속 동작합니다.

모니터링 및 로그 관리 (Monitoring & Logging)

명령어 설명
pm2 monit 실시간으로 모든 프로세스의 CPU, 메모리 사용량 등을 보여주는 대시보드를 엽니다.
pm2 logs 모든 프로세스의 로그를 실시간으로 스트리밍합니다.
pm2 logs [ID 또는 이름] 특정 프로세스의 로그만 확인합니다.
pm2 flush [ID 또는 이름] 특정 프로세스의 로그 파일을 비웁니다.

클러스터 모드 (Cluster Mode) 🚀

클러스터 모드는 단일 인스턴스에서 실행되는 Node.js의 한계를 넘어, 서버의 CPU 코어 수만큼 프로세스를 복제하여 실행하는 기능입니다. 이를 통해 별도의 설정 없이도 간단하게 서버의 부하를 분산하고 성능을 극대화할 수 있습니다. 예를 들어, 8코어 CPU를 탑재한 서버에서 클러스터 모드를 사용하면, 1개의 요청을 처리하던 서버가 동시에 8개의 요청을 처리할 수 있게 됩니다.

명령어 설명
pm2 start [app.js] -i [숫자] 지정된 숫자만큼의 인스턴스(프로세스)를 클러스터 모드로 실행합니다.
pm2 start [app.js] -i 0 또는 -i max 사용 가능한 CPU 코어 수만큼 최대로 인스턴스를 생성하여 실행합니다.
pm2 scale [이름] [숫자] 실행 중인 앱의 인스턴스(클러스터) 수를 동적으로 늘리거나 줄입니다.
pm2 reload [이름] 다운타임 없이(Zero-downtime) 애플리케이션을 재시작합니다. 이전 프로세스가 종료되기 전에 새로운 프로세스를 먼저 띄워 중단 없는 서비스를 가능하게 합니다.

Sheets로 내보내기

💡 활용 예시: pm2 start server.js -i 0 --name api-cluster 명령어를 사용하면, 서버의 모든 CPU 코어를 활용하여 Express 앱을 클러스터 모드로 실행합니다. 이는 서비스의 처리량을 크게 향상시킬 수 있습니다.

설정 파일 사용 (Ecosystem File)

매번 긴 명령어를 입력하는 대신, ecosystem.config.js 라는 설정 파일을 만들어 애플리케이션의 옵션을 체계적으로 관리할 수 있습니다.

  1. 설정 파일 생성: pm2 ecosystem 명령어를 실행하면 ecosystem.config.js 템플릿 파일이 생성됩니다.
  2. 설정 파일 예시 (ecosystem.config.js):
     module.exports = {
       apps : [{
         name   : "my-express-app", // 애플리케이션 이름
         script : "./server.js",    // 실행할 스크립트 파일
         instances: 0,              // 클러스터 모드 인스턴스 수 (0 = CPU 코어 수만큼)
         exec_mode: "cluster",      // 실행 모드 (cluster 또는 fork)
         watch  : true,             // 파일 변경 시 자동 재시작
         env    : {
           "NODE_ENV": "development", // 개발 환경 변수
         },
         env_production: {
           "NODE_ENV": "production",  // 배포 환경 변수
         }
       }]
     }
  3. JavaScript
  4. 설정 파일로 앱 실행:
명령어 설명
pm2 start ecosystem.config.js 설정 파일에 정의된 대로 앱을 시작합니다.
pm2 start ecosystem.config.js --env production env_production에 정의된 환경 변수를 사용하여 앱을 시작합니다.

서버 부팅 시 자동 시작 설정

명령어 설명
pm2 startup 현재 운영체제에 맞춰 PM2 프로세스를 시스템 서비스로 등록하는 방법을 안내합니다.
pm2 save 현재 실행 중인 프로세스 목록을 저장하여, startup 설정 시 서버가 재부팅될 때 자동으로 복원되도록 합니다.
pm2 unstartup 시스템 서비스에 등록된 PM2를 제거합니다.

근거 자료

  • PM2 공식 문서 (Quick Start): PM2의 가장 기본적인 사용법과 명령어들을 소개하는 공식 가이드입니다.
  • PM2 공식 문서 (Ecosystem File): 설정 파일인 ecosystem.config.js의 상세한 옵션과 사용법에 대해 설명합니다.
  • DigitalOcean 튜토리얼: Node.js 애플리케이션을 PM2로 설정하는 방법에 대한 실용적인 가이드로, 실제 운영 환경에서의 설정 예시를 잘 보여줍니다.

#서버 #리눅스

728x90
반응형
LIST