[Node.js] PM2 명령어를 사용하여 프로세스 관리하기 ⚠️
개요 👋
PM2
는 Node.js
에 최적화되어
애플리케이션을 유지보수하기 위해 사용되는 프로세스 관리 툴 이다.
즉, PM2
란,
Node.js
로 만들어진 프로그램을 잘 관리해주는 서비스 이다.
주요 기능 💥
1️⃣ Load Balancing
PM2
는 한 대의 서버에서 여러 인스턴의 애플리케이션을 실행할 수 있게 해 준다.
이를 통해 로드밸런싱과 리소스 활용도를 개선시킬 수 있다.
2️⃣ Auto Restart
PM2
는 애플리케이션에 문제가 발생 할 경우 자동으로 재 시작 해 준다.
3️⃣ Cluster Mode
Node.js
의 클러스터링 기능을 쉽게 사용할 수 있도록 지원한다.
4️⃣ Monitoring
애플리케이션의 성능과 에러를 실시간으로 모니터링 할 수 있다.
5️⃣ Logging
모든 프로세스 로그를 파일, 터미널 또는 다른 프로세스로 리다이렉트 할 수 있다.
6️⃣ Environment Management
다양한 환경변수 설정을 통해 개발, 테스팅, 프로덕션 등
다양한 환경에서 애플리케이션을 실행할 수 있다.
7️⃣ Startup Script
서버가 재 시작 될 때,
자동으로 애플리케이션을 시작할 수 있도록 스크립트를 생성 해 준다.
8️⃣ Zero-Downtime Reload
코드 변경사항을 적용하거나 스케일을 조정할 때,
서비스 중단 없이 리로드가 가능하다.
장점 ❓
1️⃣ Resilience
PM2
가 애플리케이션을 모니터링하고,
문제가 발생하면 자동으로 복구하기 때문에 높은 내구성을 가진다.
2️⃣ Efficiency
클러스터 모드와 로드 밸런싱 기능을 통해 서버의 자원을 효율적으로 사용할 수 있다.
3️⃣ Ease of Use
간단한 CLI 명령어를 통해 복잡한 작업을 쉽게 처리할 수 있다.
4️⃣ Developer-Friendly
로컬 개발 환경에서도 유용하게 사용할 수 있으며,
다양한 옵션과 플러그인을 통해 개발 프로세스를 편리하게 할 수 있다.
5️⃣ Community and Ecosystem
활발한 커뮤니티와 다양한 플러그인 지원을 지속적으로 업데이트한다.
명령어 🍑
1️⃣ 시작(실행)
pm2 start [실행시킬 프로세스]
pm2 start --name ["사용할 이름"] npm -- run ["실행할 script"]
2️⃣ 로그 확인
pm2 log [로그를 확인할 프로세스]
3️⃣ 중지
pm2 stop [중지 할 프로세스]
4️⃣ 재시작
pm2 reload [재 시작 할 프로세스]
5️⃣ 삭제
pm2 delete [삭제할 프로세스]
6️⃣ 모든 프로세스 중지 및 삭제
pm2 kill
명령어 적용 🚀
여느때와 같이 서버에서 API
를 호출하기 위해
pm2 log 1
명령을 실행하여 log
기록을 확인하려했지만,
정상적으로 실행이 되지 않아 ctrl + c
로 해당 명령문에서 탈출 후
pm2 reload 1
로 1번 index 를 재 시작 했지만 찾을 수 없다는 에러 메세지가 출력되었다.
역시 pm2 list
로 확인 해 보니 현재 실행중인 프로세스가 없었다.
사용할 프로세스를 실행시켜주기 위해
env
에 정의되어있는 경로를 실행해줄 package.json
을 확인한다.
해당 애플리케이션을 npm run serve
로 로컬 서버에 연결하여 실행하므로,
로컬 관련 스크립트에 담긴 정보를 불러온다.
pm2 start --name "[임의의 이름]" npm -- run local
pm2 start --name "[임의의 이름]" npm -- run local:history
pm2 start --name "[임의의 이름]" npm -- run local:price
실행한 프로세스를 pm2 list
를 실행 해 보면
프로세스가 데몬형태로 실행되고있음을 확인할 수 있다.
만약,
특정 프로세스를 잘못 실행시켜 중지 후 다시 실행시킬 경우
아래와 같이 index 번호가 계속하여 증가됨을 확인할 수 있다.
이처럼 인덱스의 증가를 원치 않는 경우엔,
pm2 kill
명령을 통해
실행중인 프로세스를 모두 중지하고 제거하고 다시 프로세스를 실행시키면 된다.
Reference 🌊
https://owldev.netlify.app/js/pm2-cmd/
https://taespapa.tistory.com/43
https://inpa.tistory.com/entry/node-%F0%9F%93%9A-PM2-%EB%AA%A8%EB%93%88-%EC%82%AC%EC%9A%A9%EB%B2%95-%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0-%EB%AC%B4%EC%A4%91%EB%8B%A8-%EC%84%9C%EB%B9%84%EC%8A%A4
https://muna76.tistory.com/259
https://phsun102.tistory.com/147