지난번 글에 PM2로 무중단 서버 구현을 포스팅 했었다.
2024.05.23 - [Node.js] - [Node.js] PM2로 무중단 서버 구현해 보자
[Node.js] PM2로 무중단 서버 구현해 보자
PM2가 무엇이냐?Node.js 프로세스 관리 도구라고 생각한다. Node.js 서버 가동 중 오류 발생으로 종료되면 자동으로 재시작해주고 nodemon처럼 수정내역을 바로 반영시켜 서버를 재 시작할수있다. pm
hgramdev.tistory.com
위의 포스팅대로 무중단 서버를 운영중이던 도중
내가 구현한 API중 파일을 주고 받는 API의 요청이 많아질경우 응답을 받지 못하는 경우가 확인되었다.
원인이 무엇이냐..?
PC의 사양? Intel Xeon(R) Gold 5220을 사용중이다.
원인은 Node.js는 기본적으로 싱글 스레드로 작동하기 때문이다.
즉 단일코어에서 실행 되고 있기때문에 CPU의 성능을 최대한으로 끌어내지 못하고 있다는것이다.
이를 해결하기 위해 PM2의 클러스터 모드를 사용할것이다.
클러스터 모드란?
Node.js를 여러 프로세스로 실행시키고 요청이 들어올때 여러 프로세스에 분배해준다.
로드 밸런싱으로 볼수도 있다.
사용방법은 간단하다.
저번 포스팅에서 나왔던
pm2 start [main.js]
pm2 start app.js
서버 실행 명령어 뒤에 -i (스레드 수) 를 입력해주면 된다
pm2 start app.js -i 5
위와 같이 실행 하면 5개의 스레드로 실행이 된다.
현재 PC의 최대 성능을 사용하려면 (MAX)
pm2 start app.js -i max
위와 같이 스레드 수에 max를 입력해주면된다.
위와 같이 클러스터 모드로 실행 후 프로세스 리스트를 확인해보면
pm2 list
위와 같이 프로세스 리스트에 여러개의 프로세스가 나온다.
여러개의 프로세스가 시작되어있어 재시작 명령어 사용시
pm2 restart 0
위와 같이 프로세스 ID를 사용하는것 보다는
pm2 restart all
all 을 입력해주는게 편리하다.
오늘은 PM2 클러스터 모드에 대해 알아봤다. 별거 아닌거 같지만 요청수가 늘어남에 따라 꼭 필요한 처리라고 생각한다.
(PM2 말고 다른 방법도 많음)
'Node.js' 카테고리의 다른 글
[Node.js] PM2로 무중단 서버 구현해 보자 (0) | 2024.05.23 |
---|