소개
PM2는 Node.js 애플리케이션을 위한 고급 프로덕션 프로세스 매니저입니다.
이 도구는 애플리케이션을 백그라운드에서 실행하고, 다운되면 자동으로 재시작하며, 로드 밸런싱을 위한 클러스터 모드를 제공하는 등의 기능을 포함하고 있습니다.
사용하는 이유
PM2는 주로 아래와 같은 기능들 때문에 널리 사용됩니다:
- 프로세스 관리: PM2는 애플리케이션을 백그라운드에서 실행하고, 애플리케이션이 실패했을 때 자동으로 재시작합니다.
- 로드 밸런싱: 여러 인스턴스를 실행하여 애플리케이션의 부하를 분산시키는 클러스터 모드를 제공합니다. 이는 시스템 리소스를 효율적으로 사용하고 성능을 향상시키는 데 도움을 줍니다.
- 로그 관리: 실행 중인 프로세스의 로그를 관리하고, 쉽게 접근할 수 있게 해 줍니다. 이는 문제 해결 과정에서 큰 도움을 줍니다.
- 무중단 서비스: PM2는 노드 애플리케이션을 무중단으로 운영할 수 있도록 돕습니다. 코드를 변경한 후에도 서비스를 중단하지 않고 업데이트할 수 있습니다.
기본적인 사용방법
- 설치
$ npm install -g pm2@latest
- pm2 를 이용한 애플리케이션 실행
$ pm2 start app.js
- 프로세스 삭제 , 중단, 모든 프로세스 죽이기
$ pm2 delete 프로세스id
$ pm2 stop 프로세스id
$ pm2 kill
- 프로세스 재시작/ 리로딩
$ pm2 restrart 프로젝트실행파일이름.js // 선호되지 않는 명령어 :프로세스를 kill하고 시작
$ pm2 reload 프로젝트실행파일이름.js // 선호 : 프로세스를 kill 하지 않고 바로 적용
- 프로세스 상태확인
$ pm2 status
$ pm2 list
status : 현재 실행중인 프로세스의 운영상태에 초점을 맞춘 정보 제공
list : 모든 관리 중인 프로세스에 대한 포괄적인 세부 정보 제공
- 프로세스 모니터링
$ pm2 monit
무중단 서비스 적용 방법
→ cluster 모드로 실행 : Node.js가 싱글 스레드라서 주어진 자원을 최대한 활용하지 못하고 하나의 CPU만 사용하는 문제를 해결할 수 있습니다.
- ecosystem.config.js 파일 생성
$ pm2 ecosystem
- 파일을 아래와 같이 수정
apps: [{
name: 'app',
script: './app.js',// 실행해야하는 스크립트 입력
instances: 0, // cpu 코어수 만큼 프로세스 생성
exec_mode: ‘cluster’, // 모드 변경
env: {
NODE_ENV: 'local',
},
}]
참고로 app 에 사용할 수 있는 변수는 다음과 같다.
- name : 실행 모드 이름
- script : 실행되는 파일
- instances : 프로세스 수
- autorestart : 재시작 on/off
- watch : watch on/off
- env: Node.js 환경변수
프로세스 증가 / 감소
$ pm2 scale app +4 // 프로세스 4 증가
$ pm2 scale app 4 // 프로세스 4 감소
- 실행
$ pm2 start ecosystem.config.js
참고자료
'서버 & 웹 개발 노트 > 리눅스' 카테고리의 다른 글
[ 리눅스 ] top 명령어를 쳤을 때 출력화면 의미 (0) | 2024.06.07 |
---|---|
[ Linux ] systemctl stauts <서비스 명> 출력 내용 설명 (0) | 2024.06.04 |
[ 리눅스 ] 폴더 삭제 파일 삭제 (0) | 2024.06.03 |
[ 리눅스 ] chown (change owner) (0) | 2024.03.31 |
[ 리눅스 ] chmod (change mode) (1) | 2024.03.31 |