wiki:glossary:server_operations:pm2
차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판이전 판다음 판 | 이전 판 | ||
| wiki:glossary:server_operations:pm2 [2025/07/28 06:12] – [🔗 관련 문서] syjang0803 | wiki:glossary:server_operations:pm2 [2025/08/01 15:02] (현재) – syjang0803 | ||
|---|---|---|---|
| 줄 3: | 줄 3: | ||
| PM2는 Node.js 애플리케이션을 위한 프로덕션 프로세스 관리자로, | PM2는 Node.js 애플리케이션을 위한 프로덕션 프로세스 관리자로, | ||
| - | ===== 📋 정의 ===== | + | ===== 1. 📋 정의 ===== |
| - | **PM2**는 Node.js 애플리케이션을 위한 오픈소스 프로세스 관리자입니다. 애플리케이션을 데몬으로 실행하고, | + | **PM2**는 Node.js 애플리케이션을 위한 오픈소스 프로세스 관리자입니다. |
| - | ===== 🎯 주요 특징 ===== | + | ===== 2. 🎯 주요 특징 ===== |
| - | **1. 프로세스 관리** | + | PM2가 제공하는 핵심 |
| - | - 애플리케이션을 백그라운드에서 실행 | + | |
| - | - 자동 재시작 | + | |
| - | - 프로세스 상태 모니터링 | + | |
| - | **2. 클러스터 모드** | + | ==== 1) 프로세스 관리 ==== |
| - | - CPU 코어 수에 맞춰 여러 인스턴스 실행 | + | |
| - | - 로드 밸런싱 자동 처리 | + | |
| - | - 고가용성 보장 | + | |
| - | **3. 모니터링 및 로깅** | + | PM2는 애플리케이션의 생명 주기를 관리하여 안정적인 운영을 보장합니다. |
| - | - 실시간 성능 모니터링 | + | * 애플리케이션을 백그라운드에서 |
| - | - 로그 관리 및 로테이션 | + | * 자동 재시작 기능: 예기치 않은 오류로 애플리케이션이 종료될 경우 자동으로 재시작하여 서비스 중단을 최소화합니다. |
| - | - 메트릭 | + | * 프로세스 상태 |
| - | ===== 🚀 설치 및 기본 사용법 ===== | + | ---- |
| + | ==== 2) 클러스터 모드 | ||
| - | **PM2 설치:** | + | PM2의 클러스터 모드는 Node.js 애플리케이션의 성능과 가용성을 향상시키는 데 매우 중요합니다. |
| - | <code bash> | + | |
| - | # 전역 설치 | + | |
| + | * 고가용성 보장: 한 인스턴스에 문제가 발생해도 다른 인스턴스가 요청을 처리하여 서비스 전체의 중단을 막습니다. | ||
| + | |||
| + | ---- | ||
| + | ==== 3) 모니터링 및 로깅 ==== | ||
| + | |||
| + | PM2는 애플리케이션의 성능을 실시간으로 파악하고 로그를 체계적으로 관리하는 기능을 제공합니다. | ||
| + | * 실시간 성능 모니터링: CPU, 메모리 사용량 등 핵심 메트릭을 실시간으로 확인하여 성능 병목 현상을 식별할 수 있습니다. | ||
| + | | ||
| + | | ||
| + | |||
| + | ===== 3. 🚀 설치 및 기본 사용법 ===== | ||
| + | |||
| + | PM2를 시스템에 설치하고 간단한 명령어로 애플리케이션을 실행하는 방법을 알아봅니다. | ||
| + | |||
| + | ==== 1) PM2 설치 ==== | ||
| + | |||
| + | PM2는 npm을 통해 전역으로 설치합니다. 전역 설치는 어떤 디렉토리에서든 '' | ||
| + | |||
| + | <file bash> | ||
| + | # 전역 설치: PM2를 시스템 어디서든 사용할 수 있도록 설치합니다. | ||
| npm install -g pm2 | npm install -g pm2 | ||
| - | # 버전 확인 | + | # 버전 확인: 설치가 제대로 되었는지 확인하고 현재 PM2 버전을 출력합니다. |
| pm2 --version | pm2 --version | ||
| - | </code> | + | </file> |
| - | **기본 명령어:** | + | ---- |
| - | <code bash> | + | ==== 2) 기본 명령어 |
| - | # 애플리케이션 시작 | + | |
| + | PM2를 사용하여 Node.js 애플리케이션을 시작하고 관리하는 기본적인 명령어들입니다. | ||
| + | |||
| + | <file bash> | ||
| + | # 애플리케이션 시작: ' | ||
| pm2 start app.js | pm2 start app.js | ||
| - | # 이름 지정하여 시작 | + | # 이름 지정하여 시작: 애플리케이션에 ' |
| pm2 start app.js --name " | pm2 start app.js --name " | ||
| - | # 클러스터 모드로 시작 | + | # 클러스터 모드로 시작: 시스템의 모든 CPU 코어를 활용하여 최대 인스턴스 수만큼 애플리케이션을 실행합니다. |
| pm2 start app.js -i max | pm2 start app.js -i max | ||
| - | # 특정 포트로 시작 | + | # 특정 포트로 시작: 애플리케이션에 인수를 전달하여 ' |
| pm2 start app.js -- --port 3000 | pm2 start app.js -- --port 3000 | ||
| - | </code> | + | </file> |
| - | ===== ⚙️ 설정 파일 ===== | + | ===== 4. ⚙️ 설정 파일 ===== |
| - | **ecosystem.config.js:** | + | '' |
| - | <code javascript> | + | |
| + | ==== 1) ecosystem.config.js 예시 ==== | ||
| + | |||
| + | 다음은 일반적인 '' | ||
| + | |||
| + | <file javascript> | ||
| module.exports = { | module.exports = { | ||
| - | apps: [{ | + | apps: [{ // 이 배열 안에 관리할 애플리케이션들의 설정을 정의합니다. |
| - | name: ' | + | name: ' |
| - | script: ' | + | script: ' |
| - | instances: ' | + | instances: ' |
| - | exec_mode: ' | + | exec_mode: ' |
| - | env: { | + | env: { // 기본 환경 변수 설정입니다. |
| - | NODE_ENV: ' | + | NODE_ENV: ' |
| - | PORT: 3000 | + | PORT: 3000 // 애플리케이션이 사용할 포트 번호입니다. |
| }, | }, | ||
| - | env_production: | + | env_production: |
| - | NODE_ENV: ' | + | NODE_ENV: ' |
| - | PORT: 3000 | + | PORT: 3000 // 프로덕션 환경에서 사용할 포트입니다. |
| }, | }, | ||
| // 로그 설정 | // 로그 설정 | ||
| - | log_file: ' | + | log_file: ' |
| - | out_file: ' | + | out_file: ' |
| - | error_file: ' | + | error_file: ' |
| - | log_date_format: | + | log_date_format: |
| | | ||
| // 자동 재시작 설정 | // 자동 재시작 설정 | ||
| - | autorestart: | + | autorestart: |
| - | watch: false, | + | watch: false, |
| - | max_memory_restart: | + | max_memory_restart: |
| | | ||
| - | // 환경 변수 | + | // 환경 변수 |
| - | env_file: ' | + | env_file: ' |
| }] | }] | ||
| }; | }; | ||
| - | </code> | + | </file> |
| + | |||
| + | 이 설정 파일을 사용하여 애플리케이션을 시작하려면 다음 명령어를 사용합니다: | ||
| + | <file bash> | ||
| + | pm2 start ecosystem.config.js | ||
| + | pm2 start ecosystem.config.js --env production # ' | ||
| + | </ | ||
| + | |||
| + | ===== 5. 🎮 프로세스 관리 ===== | ||
| + | |||
| + | PM2는 실행 중인 애플리케이션 프로세스를 효과적으로 제어하고 상태를 확인하는 다양한 명령어를 제공합니다. | ||
| + | |||
| + | ==== 1) 프로세스 제어 ==== | ||
| - | ===== 🎮 프로세스 관리 ===== | + | 실행 중인 애플리케이션을 중지, 재시작, 삭제하는 명령어입니다. |
| - | **프로세스 제어:** | + | <file bash> |
| - | <code bash> | + | # 애플리케이션 중지: ' |
| - | # 애플리케이션 중지 | + | |
| pm2 stop my-app | pm2 stop my-app | ||
| - | # 애플리케이션 재시작 | + | # 애플리케이션 재시작: ' |
| pm2 restart my-app | pm2 restart my-app | ||
| - | # 애플리케이션 삭제 | + | # 애플리케이션 삭제: ' |
| pm2 delete my-app | pm2 delete my-app | ||
| - | # 모든 애플리케이션 중지 | + | # 모든 애플리케이션 중지: PM2가 관리하는 모든 애플리케이션을 중지합니다. |
| pm2 stop all | pm2 stop all | ||
| - | # 모든 애플리케이션 재시작 | + | # 모든 애플리케이션 재시작: PM2가 관리하는 모든 애플리케이션을 재시작합니다. |
| pm2 restart all | pm2 restart all | ||
| - | </code> | + | </file> |
| - | **상태 확인:** | + | ---- |
| - | <code bash> | + | ==== 2) 상태 확인 |
| - | # 실행 중인 프로세스 목록 | + | |
| + | 실행 중인 애플리케이션의 상태, 로그, 상세 정보를 확인하는 명령어입니다. | ||
| + | |||
| + | <file bash> | ||
| + | # 실행 중인 프로세스 목록: PM2가 관리하는 모든 애플리케이션의 간략한 상태(ID, 이름, 모드, 상태, CPU, 메모리 등)를 보여줍니다. | ||
| pm2 list | pm2 list | ||
| - | # 상세 정보 확인 | + | # 상세 정보 확인: ' |
| pm2 show my-app | pm2 show my-app | ||
| - | # 로그 확인 | + | # 로그 확인: ' |
| pm2 logs my-app | pm2 logs my-app | ||
| - | # 실시간 로그 모니터링 | + | # 실시간 로그 모니터링: ' |
| pm2 logs my-app --lines 100 | pm2 logs my-app --lines 100 | ||
| - | </code> | + | </file> |
| - | ===== 📊 모니터링 ===== | + | ===== 6. 📊 모니터링 ===== |
| - | **대시보드 실행:** | + | PM2는 애플리케이션과 시스템의 상태를 시각적으로 모니터링할 수 있는 강력한 도구를 제공합니다. |
| - | <code bash> | + | |
| - | # 실시간 모니터링 대시보드 | + | ==== 1) 대시보드 실행 |
| + | |||
| + | PM2에는 터미널 기반의 실시간 모니터링 대시보드가 내장되어 있습니다. | ||
| + | |||
| + | <file bash> | ||
| + | # 실시간 모니터링 대시보드: PM2가 관리하는 모든 프로세스의 CPU, 메모리 사용량, 로그 등을 실시간으로 보여주는 대시보드를 실행합니다. | ||
| pm2 monit | pm2 monit | ||
| - | </code> | + | </file> |
| + | |||
| + | ---- | ||
| + | ==== 2) 성능 모니터링 유틸리티 ==== | ||
| + | |||
| + | 애플리케이션의 성능 관련 정보를 확인하고 관리하는 명령어들입니다. | ||
| - | **성능 모니터링: | + | <file bash> |
| - | <code bash> | + | # CPU/ |
| - | # CPU/ | + | |
| pm2 show my-app | pm2 show my-app | ||
| - | # 로그 파일 크기 확인 | + | # 로그 파일 크기 확인 |
| pm2 flush | pm2 flush | ||
| - | # 메트릭 확인 | + | # 웹 기반 |
| pm2 web | pm2 web | ||
| - | </code> | + | </file> |
| - | **메트릭 수집:** | + | ---- |
| - | <code bash> | + | ==== 3) 메트릭 수집 |
| - | # PM2 메트릭 | + | |
| + | PM2는 다양한 모듈을 설치하여 시스템 및 애플리케이션 메트릭을 확장할 수 있습니다. | ||
| + | |||
| + | <file bash> | ||
| + | # PM2 서버 모니터링 | ||
| pm2 install pm2-server-monit | pm2 install pm2-server-monit | ||
| - | # 커스텀 메트릭 추가 | + | # 커스텀 메트릭 추가: 애플리케이션 특정 메트릭을 수집하고 PM2 대시보드에서 볼 수 있도록 하는 모듈을 설치합니다. |
| pm2 install pm2-custom-metrics | pm2 install pm2-custom-metrics | ||
| - | </code> | + | </file> |
| - | ===== 🔄 자동화 ===== | + | ===== 7. 🔄 자동화 ===== |
| - | **시스템 부팅 시 자동 시작:** | + | PM2를 이용하여 |
| - | <code bash> | + | |
| - | # PM2 시작 스크립트 생성 | + | ==== 1) 시스템 부팅 시 자동 시작 ==== |
| + | |||
| + | 서버가 재부팅될 때 PM2가 관리하는 애플리케이션들이 자동으로 다시 시작되도록 설정합니다. | ||
| + | |||
| + | <file bash> | ||
| + | # PM2 시작 스크립트 생성: 현재 운영체제(예: | ||
| pm2 startup | pm2 startup | ||
| - | # 현재 실행 중인 앱들을 저장 | + | # 현재 실행 중인 앱들을 저장: 현재 PM2에 의해 관리되고 있는 모든 애플리케이션의 목록과 상태를 저장합니다. 'pm2 startup' |
| pm2 save | pm2 save | ||
| - | # 저장된 앱들을 복원 | + | # 저장된 앱들을 복원: 이전에 'pm2 save' |
| pm2 resurrect | pm2 resurrect | ||
| - | </code> | + | </file> |
| + | |||
| + | ---- | ||
| + | ==== 2) 배포 스크립트 ==== | ||
| + | |||
| + | 애플리케이션 배포 과정을 자동화하기 위한 간단한 쉘 스크립트 예시입니다. 이 스크립트는 새로운 코드를 가져오고, | ||
| - | **배포 스크립트: | + | <file bash> |
| - | <code bash> | + | |
| #!/bin/bash | #!/bin/bash | ||
| # deploy.sh | # deploy.sh | ||
| + | # 이 스크립트는 새로운 코드를 배포하고 애플리케이션을 재시작하는 과정을 자동화합니다. | ||
| echo "🚀 배포 시작..." | echo "🚀 배포 시작..." | ||
| - | # 기존 프로세스 중지 | + | # 기존 프로세스 중지: 현재 실행 중인 ' |
| pm2 stop baduk-metaverse | pm2 stop baduk-metaverse | ||
| - | # 코드 업데이트 (git pull 등) | + | # 코드 업데이트: Git 저장소에서 최신 코드를 가져옵니다. |
| git pull origin main | git pull origin main | ||
| - | # 의존성 설치 | + | # 의존성 설치: ' |
| npm install | npm install | ||
| - | # 프로덕션 환경으로 시작 | + | # 프로덕션 환경으로 시작: ' |
| pm2 start ecosystem.config.js --env production | pm2 start ecosystem.config.js --env production | ||
| - | # 상태 확인 | + | # 상태 확인: 모든 PM2 애플리케이션의 현재 상태를 확인하여 배포가 성공적으로 이루어졌는지 검증합니다. |
| pm2 list | pm2 list | ||
| echo "✅ 배포 완료!" | echo "✅ 배포 완료!" | ||
| - | </code> | + | </file> |
| - | ===== 🛠️ 문제 해결 ===== | + | ===== 8. 🛠️ 문제 해결 ===== |
| - | **일반적인 문제들:** | + | PM2 사용 중 발생할 수 있는 |
| - | **1. 메모리 부족:** | + | ==== 1) 메모리 부족 |
| - | <code bash> | + | |
| + | 애플리케이션이 너무 많은 메모리를 사용하거나 메모리 누수가 발생할 때 나타나는 문제입니다. | ||
| + | |||
| + | * **증상**: 애플리케이션이 예상치 못하게 종료되거나, | ||
| + | | ||
| + | * 메모리 사용량 확인: '' | ||
| + | <file bash> | ||
| # 메모리 사용량 확인 | # 메모리 사용량 확인 | ||
| pm2 show my-app | pm2 show my-app | ||
| - | + | </ | |
| - | # 메모리 제한 설정 | + | * 메모리 제한 설정: '' |
| + | <file bash> | ||
| + | # 메모리 제한 설정: 애플리케이션이 1GB 메모리를 초과하면 자동으로 재시작합니다. | ||
| pm2 start app.js --max-memory-restart 1G | pm2 start app.js --max-memory-restart 1G | ||
| - | </code> | + | </file> |
| + | |||
| + | ---- | ||
| + | ==== 2) 로그 파일이 너무 큼 ==== | ||
| + | |||
| + | 애플리케이션 로그 파일이 과도하게 커져 디스크 공간을 많이 차지하는 문제입니다. | ||
| - | **2. 로그 파일이 너무 큼:** | + | |
| - | <code bash> | + | |
| + | * 로그 파일 정리: '' | ||
| + | <file bash> | ||
| # 로그 파일 정리 | # 로그 파일 정리 | ||
| pm2 flush | pm2 flush | ||
| - | + | </ | |
| - | # 로그 로테이션 설정 | + | * 로그 로테이션 설정: '' |
| + | <file bash> | ||
| + | # 로그 로테이션 설정: PM2 로그 로테이션 모듈을 설치합니다. | ||
| pm2 install pm2-logrotate | pm2 install pm2-logrotate | ||
| - | </code> | + | </file> |
| - | **3. 프로세스가 자주 재시작됨: | + | ---- |
| - | <code bash> | + | ==== 3) 프로세스가 자주 재시작됨 |
| + | |||
| + | 애플리케이션이 반복적으로 충돌하여 PM2에 의해 자동으로 재시작되는 문제입니다. | ||
| + | |||
| + | * **증상**: '' | ||
| + | | ||
| + | * 재시작 횟수 확인: '' | ||
| + | <file bash> | ||
| # 재시작 횟수 확인 | # 재시작 횟수 확인 | ||
| pm2 show my-app | pm2 show my-app | ||
| - | + | </ | |
| - | # 로그에서 에러 확인 | + | * 로그에서 에러 확인: 에러 로그를 확인하여 재시작의 원인이 되는 오류 메시지를 찾습니다. |
| + | <file bash> | ||
| + | # 로그에서 에러 확인: ' | ||
| pm2 logs my-app --err | pm2 logs my-app --err | ||
| - | </code> | + | </file> |
| - | **4. 포트 충돌:** | + | ---- |
| - | <code bash> | + | ==== 4) 포트 충돌 |
| - | # 사용 중인 포트 확인 | + | |
| - | netstat -tulpn | grep :3000 | + | |
| - | # 다른 포트로 실행 | + | 애플리케이션이 이미 사용 중인 포트를 사용하려고 할 때 발생하는 문제입니다. |
| + | |||
| + | * **증상**: 애플리케이션이 시작되지 않거나 " | ||
| + | * **해결 방법**: | ||
| + | * 사용 중인 포트 확인: '' | ||
| + | <file bash> | ||
| + | # 사용 중인 포트 확인: ' | ||
| + | netstat -tulpn | grep :3000 | ||
| + | </ | ||
| + | * 다른 포트로 실행: 애플리케이션을 다른 사용 가능한 포트 번호로 시작하도록 설정합니다. | ||
| + | <file bash> | ||
| + | # 다른 포트로 실행: ' | ||
| pm2 start app.js -- --port 3001 | pm2 start app.js -- --port 3001 | ||
| - | </code> | + | </file> |
| + | |||
| + | ===== 9. 📈 성능 최적화 ===== | ||
| + | |||
| + | PM2를 이용하여 Node.js 애플리케이션의 성능을 극대화하는 방법을 알아봅니다. | ||
| + | |||
| + | ==== 1) 클러스터 모드 설정 및 활용 ==== | ||
| - | ===== 📈 성능 최적화 ===== | + | Node.js의 단일 스레드 모델 한계를 극복하기 위해 PM2의 클러스터 모드를 활용하는 방법입니다. '' |
| - | **클러스터 모드 설정:** | + | <file javascript> |
| - | <code javascript> | + | // server.js에서 클러스터 모드 지원: Node.js의 ' |
| - | // server.js에서 클러스터 모드 지원 | + | const cluster = require(' |
| - | const cluster = require(' | + | const numCPUs = require(' |
| - | const numCPUs = require(' | + | |
| - | if (cluster.isMaster) { | + | if (cluster.isMaster) { // 현재 프로세스가 마스터(부모) 프로세스인지 확인합니다. |
| console.log(`마스터 프로세스 ${process.pid} 실행 중`); | console.log(`마스터 프로세스 ${process.pid} 실행 중`); | ||
| | | ||
| - | // 워커 프로세스 생성 | + | // 워커 프로세스 생성: CPU 코어 수만큼 워커(자식) 프로세스를 생성합니다. 각 워커는 애플리케이션의 독립적인 인스턴스가 됩니다. |
| for (let i = 0; i < numCPUs; i++) { | for (let i = 0; i < numCPUs; i++) { | ||
| cluster.fork(); | cluster.fork(); | ||
| } | } | ||
| | | ||
| - | cluster.on(' | + | cluster.on(' |
| console.log(`워커 ${worker.process.pid} 종료`); | console.log(`워커 ${worker.process.pid} 종료`); | ||
| - | cluster.fork(); | + | cluster.fork(); |
| }); | }); | ||
| } else { | } else { | ||
| - | // 워커 프로세스에서 서버 실행 | + | // 워커 프로세스에서 서버 실행: 현재 프로세스가 워커인 경우, 실제 Node.js 서버 애플리케이션을 실행합니다. |
| - | require(' | + | require(' |
| } | } | ||
| - | </code> | + | </file> |
| + | PM2를 사용할 경우, '' | ||
| - | **메모리 최적화:** | + | ---- |
| - | <code javascript> | + | ==== 2) 메모리 최적화 |
| - | // 주기적인 메모리 정리 | + | |
| + | Node.js 애플리케이션의 메모리 사용량을 주기적으로 관리하여 메모리 누수를 방지하고 안정성을 높이는 방법입니다. | ||
| + | |||
| + | <file javascript> | ||
| + | // 주기적인 메모리 정리: Node.js의 가비지 컬렉션(GC)을 수동으로 트리거하여 사용되지 않는 메모리를 해제합니다. | ||
| setInterval(() => { | setInterval(() => { | ||
| - | if (global.gc) { | + | if (global.gc) { // ' |
| - | global.gc(); | + | global.gc(); |
| console.log(' | console.log(' | ||
| + | } else { | ||
| + | console.log(' | ||
| } | } | ||
| - | }, 60000); // 1분마다 | + | }, 60000); // 1분(60000 밀리초)마다 |
| - | </code> | + | </file> |
| + | **주의**: '' | ||
| - | ===== 🔧 고급 설정 ===== | + | ===== 10. 🔧 고급 설정 ===== |
| - | **로드 밸런싱: | + | PM2를 이용하여 더욱 복잡한 배포 시나리오나 운영 환경에 맞게 애플리케이션을 |
| - | <code bash> | + | |
| - | # 로드 밸런서 | + | |
| - | pm2 start ecosystem.config.js -i 4 | + | |
| - | # 특정 포트로 바인딩 | + | ==== 1) 로드 밸런싱 세부 설정 ==== |
| + | |||
| + | PM2 클러스터 모드는 자체적인 로드 밸런싱을 제공하지만, | ||
| + | |||
| + | * **PM2 자체 로드 밸런싱**: | ||
| + | <file bash> | ||
| + | # 로드 밸런서 설정: ' | ||
| + | pm2 start ecosystem.config.js -i 4 | ||
| + | </ | ||
| + | * **외부 로드 밸런서와 연동**: Nginx와 같은 외부 로드 밸런서를 사용하는 경우, PM2가 관리하는 각 애플리케이션 인스턴스를 서로 다른 포트에서 실행하도록 설정할 수 있습니다. | ||
| + | <file bash> | ||
| + | # 특정 포트로 바인딩: 각 PM2 인스턴스를 고유한 포트(3001, | ||
| pm2 start server.js --name " | pm2 start server.js --name " | ||
| pm2 start server.js --name " | pm2 start server.js --name " | ||
| - | </code> | + | </file> |
| + | |||
| + | ---- | ||
| + | ==== 2) 환경별 설정 활용 ==== | ||
| + | |||
| + | '' | ||
| - | **환경별 설정:** | + | <file javascript> |
| - | <code javascript> | + | // ecosystem.config.js: 다양한 환경에 따른 설정 예시 |
| - | // ecosystem.config.js | + | |
| module.exports = { | module.exports = { | ||
| apps: [{ | apps: [{ | ||
| 줄 285: | 줄 407: | ||
| script: ' | script: ' | ||
| instances: ' | instances: ' | ||
| - | env: { | + | env: { // 기본 환경 (예: 개발 환경) |
| NODE_ENV: ' | NODE_ENV: ' | ||
| PORT: 3000 | PORT: 3000 | ||
| }, | }, | ||
| - | env_staging: | + | env_staging: |
| NODE_ENV: ' | NODE_ENV: ' | ||
| PORT: 3001 | PORT: 3001 | ||
| }, | }, | ||
| - | env_production: | + | env_production: |
| NODE_ENV: ' | NODE_ENV: ' | ||
| PORT: 3000 | PORT: 3000 | ||
| 줄 299: | 줄 421: | ||
| }] | }] | ||
| }; | }; | ||
| - | </code> | + | </file> |
| + | 이 설정을 사용하면, | ||
| - | **헬스체크 설정:** | + | ---- |
| - | <code javascript> | + | ==== 3) 헬스체크 설정 |
| - | // 헬스체크 엔드포인트 | + | |
| + | 애플리케이션이 정상적으로 작동하는지 외부 시스템이 확인할 수 있도록 헬스체크 엔드포인트를 구현하는 것은 매우 중요합니다. PM2는 직접적인 헬스체크 기능을 제공하지 않으므로, | ||
| + | |||
| + | <file javascript> | ||
| + | // Express.js 기반의 | ||
| + | // 이 코드는 애플리케이션이 정상적으로 응답하는지 확인할 수 있는 '/ | ||
| app.get('/ | app.get('/ | ||
| - | res.status(200).json({ | + | res.status(200).json({ |
| - | status: ' | + | status: ' |
| - | timestamp: new Date().toISOString(), | + | timestamp: new Date().toISOString(), |
| - | uptime: process.uptime() | + | uptime: process.uptime() // 프로세스 실행 시간 (초 단위) |
| }); | }); | ||
| }); | }); | ||
| - | </code> | + | </file> |
| + | 이러한 헬스체크 엔드포인트는 로드 밸런서나 컨테이너 오케스트레이션 도구(예: Kubernetes)가 애플리케이션의 상태를 모니터링하고 비정상적인 인스턴스를 트래픽에서 제외하거나 재시작하는 데 활용됩니다. | ||
| + | |||
| + | ===== 11. 📚 관련 용어 ===== | ||
| + | |||
| + | PM2와 관련된 주요 기술 용어들을 간략히 설명합니다. | ||
| - | ===== 📚 관련 | + | * [[wiki: |
| + | * [[wiki: | ||
| + | * [[wiki: | ||
| + | * [[wiki: | ||
| + | * [[wiki: | ||
| - | * [[wiki: | + | ===== 12. 🔗 관련 문서 ===== |
| - | * [[wiki: | + | |
| - | * [[wiki: | + | |
| - | * [[wiki: | + | |
| - | * [[wiki: | + | |
| - | ===== 🔗 관련 문서 | + | PM2와 |
| - | * [[wiki: | + | * [[wiki: |
| - | * [[wiki: | + | * [[wiki: |
| - | * [[wiki: | + | * [[wiki: |
| - | * [[wiki: | + | * [[wiki: |
| --- | --- | ||
| - | //이 페이지는 자동으로 생성되었습니다.// | + | //이 페이지는 자동으로 생성되었습니다.// |
wiki/glossary/server_operations/pm2.1753683123.txt.gz · 마지막으로 수정됨: 저자 syjang0803
