일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- bytecode
- 안드로이드
- mysql
- 스프링부트
- node.js
- 디자인 패턴
- 스프링
- Spring Boot
- java
- 웹
- ORM
- 파이썬
- python3
- HTTP
- rabbitmq
- 보안
- 파이썬3
- django
- BCI
- 개발
- JPA
- db
- 장고
- Spring
- 스프링 부트
- 데이터베이스
- 자료구조
- Python
- 자바
- 웹 개발
- Today
- Total
semtax의 개발 일지
node.js 프로세스 매니저 => PM2 본문
개요
이번 시간에는 node.js의 프로세스 관리 도구인 pm2에 대해 소개를 하도록 하겠다.
Process Manager
먼저 아래의 상황을 가정해보자.
만약 node app.js나 npm start 만을 이용해서 서비스를 띄운다고 가정을 해보자. 그런데, 예상하지 못한 상황(예를 들어 예상 못한 값이 들어와서 예외처리를 못한다거나, DB 커넥션 풀 개수가 꽉찼다거나, 모르고 에러 핸들러 1개를 깜박하고 처리를 못했다거나 등등)이 와서 서비스가 죽어버렸다. 그런데 당신은 자고 있어서 대처가 불가능 하였다.
이런 슬픈상황이 ㅠㅠ..
또 아래와 같은 상황을 가정해보자.
당신이 node.js를 기반으로한 동접자 100명의 서비스를 운영한다고 가정해보자. 그런데 운이 좋아서 사용자가 갑자기 500명으로 5배 늘었다. 하지만 당신의 서비스는 갑작스러운 유저수의 증가를 버티지 못하고 그만 사망해버리고 말았다. 하지만 당신은 공교롭게도 자고 있어서 대처가 불가능 하였다.
이런 슬픈상황이 ㅠㅠ..
(물론 2번째 상황 같은 경우, nginx나 load balancer 또는 circuit breaking 패턴등으로도 해결이 가능하긴 하다.)
이러한 2가지 상황에 대해 대처하기 위해, node.js를 위한 많은 프로세스 매니저(Process Manager)가 나왔다.
PM2, forever 등과 같은 많은 도구들이 있지만 이 중에서 우리는 PM2에 대해서 다루어 보도록 하겠다.
사용법
아래와 같이 설치를 해준다.
npm install pm2 -g
사용 방법은 아래와 같다.
pm2 start app.js
또한, 특정 이름을 지정해서 사용할 수 도 있다.
pm2 start app.js --name "service1"
PM2의 서비스를 전부 죽이려면 다음과 같이 치면 된다.
pm2 kill
그리고 모니터링을 하는 경우 아래와 같이 수행하면 된다.
pm2 monit
또한 돈이 있다면 아래 사이트를 이용해서 유용할 것이다. 웹 형태로 된 예쁜 모니터링 화면을 볼 수 있다.
'개발 > node.js' 카테고리의 다른 글
4. node.js와 rabbitMQ 에서의 Routing (0) | 2020.01.25 |
---|---|
Node.js로 Google Protobuf 사용하기 (0) | 2020.01.22 |
3. node.js와 rabbitMQ를 이용한 pub-sub 패턴 구현 (0) | 2020.01.18 |
node.js 에서 구조 분석 해주는 도구 : arkit (0) | 2020.01.18 |
2. rabbitmq를 이용한 작업 큐 구현 (0) | 2020.01.15 |