Node는 기본적으로 싱글스레드 기반이기 때문에
내부적으로 서버를 Fork해서 여러 스레드를 쓰는 방법을 지원해준다.
바로 cluster.
기본적으로 내장되어있으며 그 위력은 어마어마하다.
그런데 linux에서 cluster를 실행한 코드를 pm2로 실행하다보니
난관에 봉착했다.
에러가 발생한다.
cluster가 설정된 코드를 실행할수없었다.
그런데 node의 공식문서에서 방법을 찾았다.
문서의 일부 내용을 발췌했다.
======================================================
PM2 사용
애플리케이션을 PM2에 배치하면, 애플리케이션 코드를 수정하지 않고도 클러스터링을 활용할 수 있습니다. 먼저 여러분의 애플리케이션이 stateless인지 확실하게 해야합니다. 어떠한 로컬 데이터도 프로세스에 저장되지 않아야 합니다. (세션이나 웹소켓 같은 것들 말입니다).
PM2로 애플리케이션을 실행하고 있을 때, 특정한 수의 인스턴스에 실행하는 클러스터 모드를 켤 수 있습니다. 머신의 가용 CPU 수같은 것들이 특정한 수입니다. 애플리케이션을 끌 필요 없이 pm2 커맨드라인 명령을 이용해 클러스터에 있는 프로세스의 수를 직접 바꿀 수도 있습니다.
아래와 같은 방법으로 클러스터 모드를 킵니다.
# Start 4 worker processes
$ pm2 start app.js -i 4 # Auto-detect number of available CPUs and start that many worker processes
$ pm2 start app.js -i max
이 수는 PM2 프로세스 파일 (ecosystem.config.js나 그와 유사한 파일) 안의 exec_mode를 cluster나 instances를 설정해서 수정될 수 있습니다.
실행이 시작되면, app으로 이름지어진 애플리케이션을 아래와 같은 방법으로 스케일링 할 수 있습니다.
# Add 3 more workers
$ pm2 scale app +3 # Scale to a specific number of workers
$ pm2 scale app 2
PM2의 클러스터링에 관한 추가 정보는 PM2 문서의 Cluster Mode를 참고해주세요.
======================================================
'개발, 코딩 > Node' 카테고리의 다른 글
node.js - canvas (0) | 2021.03.31 |
---|---|
fs모듈을 이용하여, 유용한 로깅 시스템 구축하기 (0) | 2020.12.30 |
비대칭키(공개키 활용)를 이용한 양방향 통신 암호화 (0) | 2020.03.13 |
nodejs with youtube api (2) (0) | 2019.10.24 |
nodejs with youtube (read & upload) (1) | 2019.10.17 |