2017-10-30 2 views
5

Docker 컨테이너는 다중 스레드를 사용하고 Node.js 응용 프로그램은 단일 스레드 만 사용합니다. Node.js 클러스터링을 처리하는 pm2과 같은 것을 실행함으로써 Docker 컨테이너에서 사용할 수있는 모든 코어를 활용할 수있었습니다.Node.js 클러스터링과 여러 Docker 컨테이너

Node.js 프로세스를 클러스터링하여 각 Docker 인스턴스를 더 잘 활용할 수 있습니까? 그렇다면 단순히 컨테이너 당 하나의 스레드 된 Node.js 인스턴스를 실행하는 것이 바람직하지 않습니까?

Docker 컨테이너가 실행중인 CPU의 수를 늘리거나 줄일 수있는 부작용이있을 수 있습니다.

답변

0

먼저 노드 클러스터를 실행하려면 기본적으로 pm2가 필요하지 않습니다. 노드에는 멀티 코어 시스템을 활용할 수있는 inbuilt clusters module이 함께 제공됩니다. 또한 작업자 수를 하드 코딩하지 않으면 인스턴스 축소가 실제로 영향을 미치지 않습니다. 클러스터를 사용하여 작업자를 생성하는 방법을 이해하려면 클러스터 모듈의 예제 코드를 참조하십시오.

+0

질문은 클러스터링과 다중 클러스터 컨테이너에 대한 것입니다. pm2는 단지 예일뿐입니다 .-) – stefanobaldo

0

다른 도커 구성 요소 안에 NodeJS를 클러스터링하는 것에 대해 이야기하는 경우 추가 성능이 향상되지 않는다고 생각합니다. NodeJS는 하나의 스레드에서 실행되므로 pm2 (실제로 사용함) 또는 docker는로드를 분배하는 측면에서 동일한 효과를 나타냅니다.

NodeJS는 들어오는 요청을 처리하는 방법을 처리하는 웹 작업자 개념을 가지고 있지만 너무 빠른 서버조차도 비 차단 아키텍처이기 때문에 수백 가지 요청을 처리합니다.

내가 원하는 Docker를 파고들 필요가 있지만 시간이 없지만 서버 당 하나의 도커 이미지 (가상 또는 실제)를 가진 다음 몇 가지를 실행해야합니다. 그 안에있는 노드의 인스턴스.

그 이유는 내가 도커 나에 대한 의존성을 처리하도록하고 나는 그것이 메모리가 목표에 도달하거나 오류가 발생한 노드를 다시 시작 자동 재시작 등의 유용한 기능을 가지고 있기 때문에 PM2는 클러스터 관리를 처리 할

+0

"NodeJS는 웹 근로자 개념을 갖고 있습니까?"라는 것은 무엇을 의미합니까? –

+0

아마도 웹 작업자가 가장 좋은 용어는 아니지만 구성 할 수있는 maxSockets을 의미했습니다. http.globalAgent.maxSockets – sfratini

관련 문제