우리는 멀티 CPU 상자에서 우리의 명시적인 애플리케이션으로 클러스터링을 사용합니다. 잘 작동하므로 AWS Linux 서버를 최대한 활용할 수 있습니다.Node.js 추가 프로세스가있는 클러스터
우리는 수정중인 앱을 상속 받았습니다. 두 가지 프로세스가 있다는 점에서 이례적입니다. 들어오는 요청을 가져 오는 Express API 부분이 있습니다. 그러나 이러한 요청에 따라 작동하는 프로세스는 몇 분 동안 실행될 수 있으므로 별도의 백그라운드 프로세스, 노드 호출 python 및 maya로 빌드되었습니다.
원래 두 개는 데이터 업로드 요청에 의해 호출 된 python 스크립트와 밀접하게 결합되었습니다. 그러나 이것은 클라이언트가 실행하는 데 걸리는 시간 동안 응답을 기다리게하기 때문에 차선책이었습니다. 따라서 루프에서 실행되는 백그라운드 프로세스로 다시 작성되고 새 업로드를 확인한 후 순차적으로 처리됩니다.
내 질문은 이것입니다. 백그라운드에서이 개별 노드 프로세스를 실행하고 각 CPU에 대한 프로세스를 시작하는 클러스터를 실행하면 어떻게됩니까? 동일한 CPU에 대해 두 노드 프로세스가 경쟁하지 않을 것입니다. 우리는 많은 오류 메시지없이 (어버이를 좋아하는 하나님) 어제 이상한 행동과 어제의 충돌을 얻었습니다. 나는 리눅스가 사용되는 과정에서 프로세스를 교환하는 것으로 가정하고있다. 그러나 문제가 될지 궁금해하며, 더 이상 실행되는 프로세스가 실행되는 동안 몇 분 동안 웹 세션을 스왑 아웃 한 사람에 대해 궁금합니다.
똑똑한 일은 두 개의 다른 서버에서 실행되도록 다시 작성하는 것이지만 maya가 사용/작성하는 파일은 서버의 파일 시스템에 있고 우리는 우리가해야 할 방식을 재구성하는 예산을받지 못했습니다. 그래서 우리는 지금이 아키텍처를 고수하고 있습니다.
지금 생각할 수있는 모든 문제와 그 문제를 피하는 방법을 생각해보십시오.
감사합니다. 루프는 RDS 인스턴스에서 새 레코드를 확인하고 하나를 선택한 다음 처리합니다. 따라서 작업이 없어도 매초마다 settimeout을 사용하여 확인한 다음 다시 시작할 수 있습니다. 작동하지 않을 때입니다. 더 많은 모니터링을하고, 파이썬 프로세스가 시작될 때, CPU를 먹지만, 마야입니다. 복잡한 그래픽을 렌더링하고, 그것에 대해 아무런 조치를 취하지 않습니다. 리소스를 제한하면 더 오래 걸릴 것입니다. – CargoMeister
Maya는 멀티 스레드가 아니므로 코어 당 하나의 nodejs 프로세스를 실행할 수 있어야하며 모든 작업이 처리되는 동안 모든 코어가 사용되어야합니다. – jeremy
이 상황에서 더 나은 설정은 1 nodejs 프로세스를 실행하고 코어 당 1 개의 파이썬 프로세스를 생성 할 수있는 방식으로 설정하는 것입니다. nodejs는 중요한 CPU를 사용하지 않기 때문에 CPU 당 여러 인스턴스가 필요한 문제는 발생하지 않습니다.단일 노드 프로세스는 수백 개의 프로세스를 쉽게 생성하고 추적 할 수 있습니다 (4-8 개를 실행하지 않을 가능성이 높습니다). – jeremy