728x90
반응형
pm2 restart
- 모든 프로세스를 중단 후 다시 시작
- 프로세스가 죽고 새로 뜨기 때문에 다운타임(downtime) 발생
- 클러스터 모드(
instances > 1)에서도 프로세스 전체가 동시에 종료 → 요청이 잠시 끊김 - 개발 환경에서 코드 변경을 빠르게 반영할 때 많이 사용
- 운영 환경에서는 트래픽이 잠깐이라도 끊기기 때문에 가급적 지양
pm2 restart ecosystem.config.js
pm2 reload
- 무중단(Zero-downtime) 재시작 방식
- 클러스터 모드에서 워크 프로세스를 하나씩 교체한다.
- ex) 4개 instance → 1번부터 순서대로 교체 → 서비스 중단 없이 업데이트
- 이 방식으로 서비스 중단 없이 배포 가능
- 싱글 인스턴스(
instances = 1)일 경우, 교체할 프로세스가 하나뿐이라 결국 restart와 동일 - 운영 서버 배포에서 무중단 배포를 원할 때 권장
pm2 reload ecosystem.config.js
무중단 배포를 위한 조건
reload가 무조건 무중단인 것은 아님ecosystem.config.js에서instances를 2개 이상으로 설정해야 효과 있음- 만약 인스턴스가 하나라면
reload=restart
module.exports = {
apps: [
{
name: "my-app",
script: "server.js",
instances: 2, // 최소 2 이상
exec_mode: "cluster",
},
],
};
ecosystem.config.js와 직접 명령의 차이
pm2 restart <name>orpm2 reload <name>로 앱 이름을 지정할 수도 있고,pm2 restart ecosystem.config.js로 설정 전체를 반영할 수도 있음- 보통 운영에서는
ecosystem.config.js를 Git에 버전 관리하고, 배포 스크립트 안에서pm2 reload로 돌림
→ 설정 변경과 무중단 배포를 동시에 진행
실제 운영환경의 베스트 프랙티스
- 개발 환경:
pm2 restart→ 빠르게 반영, 다운타임 문제 X - 운영 환경:
instances: 2++exec_mode: clusterpm2 reload로 무중단 배포- 배포 자동화(Jenkins, GitHub Actions 등)와 함께 쓰면 효율적
정리
- instances = 1 일 경우
restart와reload는 똑같음 - instances > 1 일 경우
reload를 써야 무중단 배포 가능 - 운영환경에서는 꼭
reload+ 클러스터 모드로 최소 2개의 인스턴스를 준비하고, 무중단 배포를 구성해야 안정적이다.
728x90
반응형
'Infra > Server' 카테고리의 다른 글
| k6 부하 테스트 가이드 (0) | 2025.09.18 |
|---|---|
| ppk to pem (0) | 2025.06.16 |
| hombrew 설치 및 zsh: command not found 해결 (0) | 2021.11.08 |
| 빌드의 자동화를 위한 Jenkins(젠킨스) (0) | 2021.10.13 |