wiki:glossary:server_operations:pm2
차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판이전 판 | |||
wiki:glossary:server_operations:pm2 [2025/07/30 06:43] – 바깥 편집 127.0.0.1 | 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> |
- | **성능 모니터링:** | + | ---- |
- | <code bash> | + | ==== 2) 성능 모니터링 |
- | # CPU/ | + | |
+ | 애플리케이션의 성능 관련 정보를 확인하고 관리하는 명령어들입니다. | ||
+ | |||
+ | <file bash> | ||
+ | # CPU/ | ||
pm2 show my-app | pm2 show my-app | ||
- | # 로그 파일 크기 확인 | + | # 로그 파일 크기 확인 |
pm2 flush | pm2 flush | ||
- | # 메트릭 확인 | + | # 웹 기반 |
pm2 web | pm2 web | ||
- | </code> | + | </file> |
+ | |||
+ | ---- | ||
+ | ==== 3) 메트릭 수집 모듈 ==== | ||
+ | |||
+ | PM2는 다양한 모듈을 설치하여 시스템 및 애플리케이션 메트릭을 확장할 수 있습니다. | ||
- | **메트릭 수집:** | + | <file bash> |
- | <code bash> | + | # PM2 서버 모니터링 |
- | # 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. 로그 파일이 너무 큼:** | + | ---- |
- | <code bash> | + | ==== 2) 로그 파일이 너무 큼 ==== |
+ | |||
+ | 애플리케이션 로그 파일이 과도하게 커져 디스크 공간을 많이 차지하는 문제입니다. | ||
+ | |||
+ | * **증상**: 디스크 공간 부족 경고가 발생하거나, | ||
+ | | ||
+ | * 로그 파일 정리: '' | ||
+ | <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. 📚 관련 용어 ===== |
- | * [[wiki: | + | PM2와 관련된 주요 기술 용어들을 간략히 설명합니다. |
- | * [[wiki: | + | |
- | * [[wiki: | + | |
- | * [[wiki: | + | |
- | * [[wiki: | + | |
- | ===== 🔗 관련 문서 ===== | + | * [[wiki: |
+ | * [[wiki: | ||
+ | * [[wiki: | ||
+ | * [[wiki: | ||
+ | * [[wiki: | ||
- | * [[wiki: | + | ===== 12. 🔗 관련 문서 ===== |
- | * [[wiki: | + | |
- | * [[wiki: | + | |
- | * [[wiki: | + | |
- | --- | + | PM2와 관련된 추가 정보를 얻을 수 있는 문서들입니다. |
- | //이 페이지는 자동으로 생성되었습니다.// | + | |
+ | * [[wiki: | ||
+ | * [[wiki: | ||
+ | * [[wiki: | ||
+ | * [[wiki: | ||
+ | |||
+ | --- | ||
+ | //이 페이지는 자동으로 생성되었습니다.// |
wiki/glossary/server_operations/pm2.txt · 마지막으로 수정됨: 저자 syjang0803