일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Linux
- kotlin
- Spring
- 정보처리기사 실기
- 티스토리챌린지
- minikube
- AWS EKS
- CloudWatch
- 오블완
- Kubernetes
- aws
- 정보처리기사 실기 기출문제
- CKA 기출문제
- 기록으로 실력을 쌓자
- 코틀린 코루틴의 정석
- kotlin spring
- 정보처리기사실기 기출문제
- CKA
- mysql 튜닝
- IntelliJ
- Java
- APM
- MySQL
- Pinpoint
- kotlin coroutine
- PETERICA
- 공부
- kotlin querydsl
- Elasticsearch
- AI
- Today
- Total
피터의 개발이야기
[Node.js] PM2를 사용한 Node.js 관리하기(PM2 사용법 정리) 본문
ㅁ 관련글
ㅇ [Node.js] PM2를 사용한 Node.js 관리하기(PM2 사용법 정리)
ㅇ [Docker] Docker와 pm2를 함께 사용하는 것이 불리한 이유
ㅇ [Docker] Express 서버를 Docker에서 PM2로 기동하는 방법
ㅇ [Grafana] grafana k6로 테스트 환경 구성(grafana, influxdb, k6)
ㅁ 들어가며
ㅇ PM2는 Node.js 애플리케이션을 위한 강력한 프로세스 관리자이다.
ㅇ 이 글에서는 PM2의 주요 기능과 사용법을 정리하였다.
ㅁ PM2란?
PM2는 Node.js 애플리케이션을 위한 강력한 프로세스 관리자이다.
ㅇ 주요 특징
- 애플리케이션을 데몬으로 실행하고 모니터링
- 서버가 갑자기 중지되어도 자동으로 재시작
- 멀티코어 활용을 위한 클러스터 모드를 지원
- 로드 밸런싱 기능을 제공
ㅁ PM2 설치
npm install pm2 -g
ㅁ 기본 사용법
애플리케이션 실행
ㅇ PM2로 Node.js 애플리케이션을 실행하는 간단한 방법
pm2 start app.js
프로세스 관리
ㅇ 프로세스 목록
pm2 list
ㅇ 프로세스를 중지, 재시작, 삭제
pm2 stop app.js
pm2 restart app.js
pm2 delete app.js
ㅁ 클러스터 모드
ㅇ PM2의 클러스터 모드를 사용하면 Node.js의 싱글 스레드 한계를 극복할 수 있다.
pm2 start app.js -i max
ㅇ 이 명령어는 가용한 CPU 코어 수만큼 프로세스를 생성한다.
ㅁ 무중단 서비스 구현
ㅇ PM2를 사용하면 애플리케이션을 무중단으로 업데이트할 수 있다.
ㅇ 이를 위해 ecosystem.config.js 파일을 생성한다.
module.exports = {
apps: [{
name: "app",
script: "./app.js",
instances: "max",
exec_mode: "cluster",
watch: true,
env: {
NODE_ENV: "development",
},
env_production: {
NODE_ENV: "production",
}
}]
}
ㅇ 이 설정 파일로 애플리케이션을 실행하고 무중단 재시작을 할 수 있다:
pm2 start ecosystem.config.js
pm2 reload ecosystem.config.js
ㅁ Gracefully Reload
ㅇ PM2의 startOrGracefulReload 명령어는 애플리케이션을 우아하게(gracefully) 재시작하는 기능을 제공한다.
ㅇ 기존 연결을 강제로 끊지 않고 모든 연결이 정상적으로 종료될 때까지 기다린다.
ㅇ kill_timeout 옵션을 통해 이전 프로세스의 종료 대기 시간을 설정할 수 있다.
ㅇ ecosystem.config.js과 같은 설정 파일을 사용하여 여러 애플리케이션을 동시에 관리할 수 있다.
$ pm2 startOrGracefulReload ecosystem.config.js --wait-ready --update-env
ㅁ 로그 관리
ㅇ PM2는 자동으로 로그를 관리한다.
pm2 logs
ㅇ 로그 파일이 계속 쌓이는 것을 방지하기 위해 pm2-logrotate
모듈을 사용할 수 있다.
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 1K
pm2 set pm2-logrotate:retain 10
ㅁ 모니터링
pm2 monit
ㅇ 이 명령어를 통해 CPU 사용량, 메모리 사용량, 요청 처리량 등을 실시간으로 확인할 수 있다.
ㅁ pm2 plus
ㅇ pm2에서 제공하는 plus 기능을 사용해 보았다.
$ pm2 plus
[PM2 I/O] Using non-browser authentication.
[PM2 I/O] Do you have a pm2.io account? (y/n) n
[PM2 I/O] No problem ! We just need few informations to create your account
[PM2 I/O] Please choose an username : peterica seo
[PM2 I/O] Please choose an email : ilovefran.ofm@gmail.com
[PM2 I/O] Please choose a password : *********
[PM2 I/O] Do you accept the terms and privacy policy (https://pm2.io/legals/terms_conditions.pdf) ? (y/n) y
[PM2 I/O] Successfully authenticated
[PM2 I/O] Successfully validated
[PM2 I/O] By default we allow you to trial PM2 Plus for 14 days without any credit card.
[PM2 I/O] Successfully created the bucket
[PM2 I/O] Using: Public key: m4taozxzb0zy5cu | Private key: sbkolfgcokayvy5 | Machine name: a59cee7363ca-1213
[PM2.IO][WARNING] Not managed to connect to PM2 Plus, retrying in background.
[+] PM2+ activated!
[PM2 I/O] Successfully connected to bucket PM2 Plus Monitoring
[PM2 I/O] You can use the web interface over there: https://app.pm2.io/#/bucket/672032c05ddd55d0f061991f
ㅇ By default we allow you to trial PM2 Plus for 14 days without any credit card.
ㄴ 14일동안 무료로 사용해 볼 수 있다.
ㅇ pm2 plus 명령어를 수행하면 사용자 정보를 입력 후 사용할 수 있다.
ㅇ 마지막 링크로 접속하면 모니터링 지표를 확인할 수 있다.
ㅁ CheatSheet
# Fork mode
pm2 start app.js --name my-api # Name process
# Cluster mode
pm2 start app.js -i 0 # Will start maximum processes with LB depending on available CPUs
pm2 start app.js -i max # Same as above, but deprecated.
pm2 scale app +3 # Scales `app` up by 3 workers
pm2 scale app 2 # Scales `app` up or down to 2 workers total
# Listing
pm2 list # Display all processes status
pm2 jlist # Print process list in raw JSON
pm2 prettylist # Print process list in beautified JSON
pm2 describe 0 # Display all information about a specific process
pm2 monit # Monitor all processes
# Logs
pm2 logs [--raw] # Display all processes logs in streaming
pm2 flush # Empty all log files
pm2 reloadLogs # Reload all logs
# Actions
pm2 stop all # Stop all processes
pm2 restart all # Restart all processes
pm2 reload all # Will 0s downtime reload (for NETWORKED apps)
pm2 stop 0 # Stop specific process id
pm2 restart 0 # Restart specific process id
pm2 delete 0 # Will remove process from pm2 list
pm2 delete all # Will remove all processes from pm2 list
# Misc
pm2 reset <process> # Reset meta data (restarted time...)
pm2 updatePM2 # Update in memory pm2
pm2 ping # Ensure pm2 daemon has been launched
pm2 sendSignal SIGUSR2 my-app # Send system signal to script
pm2 start app.js --no-daemon
pm2 start app.js --no-vizion
pm2 start app.js --no-autorestart
ㅇ 출처: PM2 Process Management Quick Start - CheatSheet
ㅁ 마무리
PM2를 활용하면 Node.js 애플리케이션의 안정성과 성능을 크게 향상시킬 수 있으며, 효율적인 프로세스 관리와 무중단 배포가 가능하다. 특히 클러스터 모드와 무중단 서비스 기능은 대규모 애플리케이션 운영에 매우 유용하다.
ㅁ 함께 보면 좋은 사이트
'DevOps > Node.js' 카테고리의 다른 글
[Node.js] Node.js 서버 사이드,찍먹하기 (3) | 2024.09.27 |
---|---|
[Node.js] NodeJS 기본문법 (0) | 2024.09.20 |
[Node.js] Docker를 이용한 샘플 node.js 작성 (0) | 2024.09.15 |