2015-01-30 3 views
1

우리는 멀티 CPU 상자에서 우리의 명시적인 애플리케이션으로 클러스터링을 사용합니다. 잘 작동하므로 AWS Linux 서버를 최대한 활용할 수 있습니다.Node.js 추가 프로세스가있는 클러스터

우리는 수정중인 앱을 상속 받았습니다. 두 가지 프로세스가 있다는 점에서 이례적입니다. 들어오는 요청을 가져 오는 Express API 부분이 있습니다. 그러나 이러한 요청에 따라 작동하는 프로세스는 몇 분 동안 실행될 수 있으므로 별도의 백그라운드 프로세스, 노드 호출 python 및 maya로 빌드되었습니다.

원래 두 개는 데이터 업로드 요청에 의해 호출 된 python 스크립트와 밀접하게 결합되었습니다. 그러나 이것은 클라이언트가 실행하는 데 걸리는 시간 동안 응답을 기다리게하기 때문에 차선책이었습니다. 따라서 루프에서 실행되는 백그라운드 프로세스로 다시 작성되고 새 업로드를 확인한 후 순차적으로 처리됩니다.

내 질문은 이것입니다. 백그라운드에서이 개별 노드 프로세스를 실행하고 각 CPU에 대한 프로세스를 시작하는 클러스터를 실행하면 어떻게됩니까? 동일한 CPU에 대해 두 노드 프로세스가 경쟁하지 않을 것입니다. 우리는 많은 오류 메시지없이 (어버이를 좋아하는 하나님) 어제 이상한 행동과 어제의 충돌을 얻었습니다. 나는 리눅스가 사용되는 과정에서 프로세스를 교환하는 것으로 가정하고있다. 그러나 문제가 될지 궁금해하며, 더 이상 실행되는 프로세스가 실행되는 동안 몇 분 동안 웹 세션을 스왑 아웃 한 사람에 대해 궁금합니다.

똑똑한 일은 두 개의 다른 서버에서 실행되도록 다시 작성하는 것이지만 maya가 사용/작성하는 파일은 서버의 파일 시스템에 있고 우리는 우리가해야 할 방식을 재구성하는 예산을받지 못했습니다. 그래서 우리는 지금이 아키텍처를 고수하고 있습니다.

지금 생각할 수있는 모든 문제와 그 문제를 피하는 방법을 생각해보십시오.

답변

1

잠재적인 전반적인 아키텍처에서 코어 당 1 노드를 생성하는 것이 좋은 방법입니다. 당신은 상호 의존성이 많지만 nodejs 프로세스는 여러 스레드를 사용할 수있는 maya를 호출합니다 (이를 염두에 두십시오).

내게 관련된 부분은 임의적 인 충돌과 "루프에서 실행되는 프로세스"입니다. 이 프로세스가 파일 시스템을 점검하는 중이라면 nodejs 프로세스가 동일한 입력/출력 파일에서 작동하도록 경쟁하는 경합 조건이있을 수 있습니다.

이론적으로 코어 당 1 노드 프로세스가 효과적 일 수 있으며 모든 CPU 사용을 활용하는 데 도움이됩니다. 리눅스는 언제나 프로세스를 스왑 (swap)하여 문제가되지 않도록합니다. 코어 당 여러 노드를 시작할 수 있지만 여전히 문제는 없습니다.

마지막 메모 하나, EC2의 여러 Linux 배포판에는 기본적으로 사용하도록 설정된 스왑 파일이 없으므로 메모리가 부족하면 다른 자동 침입 방지 킬러가 될 수 있으므로 스왑을 추가하는 것이 가장 좋습니다 메모리 문제가 발생할 경우를 대비하여

+0

감사합니다. 루프는 RDS 인스턴스에서 새 레코드를 확인하고 하나를 선택한 다음 처리합니다. 따라서 작업이 없어도 매초마다 settimeout을 사용하여 확인한 다음 다시 시작할 수 있습니다. 작동하지 않을 때입니다. 더 많은 모니터링을하고, 파이썬 프로세스가 시작될 때, CPU를 먹지만, 마야입니다. 복잡한 그래픽을 렌더링하고, 그것에 대해 아무런 조치를 취하지 않습니다. 리소스를 제한하면 더 오래 걸릴 것입니다. – CargoMeister

+0

Maya는 멀티 스레드가 아니므로 코어 당 하나의 nodejs 프로세스를 실행할 수 있어야하며 모든 작업이 처리되는 동안 모든 코어가 사용되어야합니다. – jeremy

+0

이 상황에서 더 나은 설정은 1 nodejs 프로세스를 실행하고 코어 당 1 개의 파이썬 프로세스를 생성 할 수있는 방식으로 설정하는 것입니다. nodejs는 중요한 CPU를 사용하지 않기 때문에 CPU 당 여러 인스턴스가 필요한 문제는 발생하지 않습니다.단일 노드 프로세스는 수백 개의 프로세스를 쉽게 생성하고 추적 할 수 있습니다 (4-8 개를 실행하지 않을 가능성이 높습니다). – jeremy

관련 문제