sourcecode

PM2의 클러스터 및 포크 모드 차이

copyscript 2023. 8. 12. 10:34
반응형

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또는pythonpm2가 있는 서버.네, 그exec_interpreter하위 프로세스를 시작하는 데 사용되는 "명령"입니다.기본적으로 pm2는node하도록pm2 start server.js다음과 같은 작업을 수행합니다.

require('child_process').spawn('node', ['server.js'])

이 모드는 많은 가능성을 가능하게 하기 때문에 매우 유용합니다.예를 들어 미리 설정된 포트에서 여러 서버를 시작한 다음 HAProxy 또는 Nginx에 의해 로드 밸런싱될 수 있습니다.

클러스터 모드

cluster에서만 작동합니다.node현재 상태로는exec_interpreternodejs 클러스터 모듈에 액세스하기 때문입니다(예: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

반응형