PM2의 클러스터 및 포크 모드 차이
저는 이 질문을 알아내기 위해 많은 검색을 했지만, 명확한 설명을 듣지 못했습니다.클러스터링된 앱을 확장할 수 있는 것과 분기된 앱을 확장할 수 없는 것의 차이점은 단 한 가지입니까?
PM2의 공개 사이트는 클러스터 모드가 이러한 기능을 수행할 수 있다고 설명하지만 아무도 포크 모드의 장점에 대해 말하지 않습니다(아마도, 그것은 얻을 수 있을 것입니다)NODE_APP_INSTANCE
변수).
포크가 일반적으로 사용되는 것처럼 보이기 때문에 클러스터가 포크의 일부일 수도 있다는 느낌이 듭니다.따라서 PM2에서 Fork는 단지 'forked process'를 의미하고 Cluster는 '스케일링할 수 있는 forked process'를 의미한다고 생각합니다.그렇다면 왜 포크 모드를 사용해야 합니까?
사이의 주요 차이점fork_mode
그리고.cluster_mode
즉, pm2에 child_process 중 하나를 사용하도록 명령합니다.fork api 또는 클러스터 api.
이것은 내부적으로 무엇을 의미합니까?
포크 모드
가져가세요fork
모드를 기본 프로세스 산란으로 설정합니다.이를 통해 다음을 변경할 수 있습니다.exec_interpreter
실행할 수 있도록php
또는python
pm2가 있는 서버.네, 그exec_interpreter
하위 프로세스를 시작하는 데 사용되는 "명령"입니다.기본적으로 pm2는node
하도록pm2 start server.js
다음과 같은 작업을 수행합니다.
require('child_process').spawn('node', ['server.js'])
이 모드는 많은 가능성을 가능하게 하기 때문에 매우 유용합니다.예를 들어 미리 설정된 포트에서 여러 서버를 시작한 다음 HAProxy 또는 Nginx에 의해 로드 밸런싱될 수 있습니다.
클러스터 모드
그cluster
에서만 작동합니다.node
현재 상태로는exec_interpreter
nodejs 클러스터 모듈에 액세스하기 때문입니다(예:isMaster
,fork
방법 등).이는 프로세스가 여러 인스턴스에서 자동으로 분기되기 때문에 제로 구성 프로세스 관리에 적합합니다.예를들면pm2 start -i 4 server.js
의 4개 인스턴스를 시작합니다.server.js
클러스터 모듈이 로드 밸런싱을 처리하도록 합니다.
Node.js는 단일 스레드입니다.
즉, Intel 쿼드코어 CPU의 1개 코어만 노드 애플리케이션을 실행할 수 있습니다.
다음을 불렀습니다.fork_mode
.
로컬 개발에 사용합니다.
pm2 start server.js -i 0
에서는 CPU의 각 코어에서 노드 스레드를 하나씩 실행할 수 있습니다.
상태 비저장 요청을 자동으로 로드 밸런싱합니다.
같은 포트에 있습니다.
이를 다음과 같이 부릅니다.cluster_mode
.
이것은 생산에 대한 성능을 위해 사용됩니다.
PC를 스트레스 테스트하려면 로컬 개발에서 이 작업을 수행하도록 선택할 수도 있습니다. :)
문서와 출처는 여기서 정말 오해의 소지가 있습니다.
출처에서 이에 대해 읽어보면, 유일한 차이점은 그들이 두 노드 중 하나를 사용한다는 것입니다.cluster
또는child_process
이후로. 그 이후로.cluster
후자를 사용합니다, 당신은 실제로 같은 일을 하고 있습니다. 커스텀이 더 많아요.stdio
해프닝 여관을 돌아다니기fork_mode
. . . .cluster
개체가 아닌 문자열을 통해서만 통신할 수 있습니다.
는 기적으중항목을 사용합니다.fork_mode
만약 당신이 그것을 통과한다면.-i [number]
-옵션, 당은들것입다니로 .cluster_mode
로 하는 은 w와 당이일목하는것로표로으입니다.pm2
.
도.fork_mode
인스턴스는 아마도 다음과 같은 이유로 동일한 포트에서 수신하지 못할 것입니다.EADDRINUSE
.cluster_mode
이러한 방식으로 동일한 포트에서 실행하도록 앱을 구성하여 자동으로 로드 밸런싱할 수도 있습니다.그럼에도 불구하고 세션, dbs와 같은 상태 없이 앱을 구축해야 합니다.
언급URL : https://stackoverflow.com/questions/34682035/cluster-and-fork-mode-difference-in-pm2
'sourcecode' 카테고리의 다른 글
UI WebView에서 WKWebView로 마이그레이션 (0) | 2023.08.12 |
---|---|
UI WebView의 쿠키는 어디에 저장됩니까? (0) | 2023.08.12 |
SQL Server 2005: 트리거를 일시적으로 비활성화하는 T-SQL (0) | 2023.08.12 |
파일 생성 날짜 범위로 Powershell Get-Child 항목 제한 (0) | 2023.08.07 |
하단의 둥근 모서리SheetDialogFragment (0) | 2023.08.07 |