2012-02-26 2 views
0

많은 하위 서버의 상태를 처리하는 nodejs tcp 서버가 있습니다. 상태 서버가 하위 서버에 작업 수행을 지시하면 잠재적으로 비용이 많이 들고 대부분의 경우 매우 비쌉니다 (약 1 분), 어떤 경우에는 2 초 내에 완료 될 것입니다.잠재적으로 값 비싼 작업 실행

하위 서버가 수행하는 작업 (웹 소켓에서 수신 대기하고 많은 양의 데이터를 매우 빈번하게 전달 함) 때문에이 값 비싼 작업을 수행하는 동안 하위 서버를 정지시킬 여유가 없습니다.

분명히 nodejs는 지저분한 구현없이 새 스레드를 생성 할 수있는 능력이 없습니다. 잠재적으로 값 비싼이 작업을 실행하기위한 새로운 프로세스를 생성 할 가치가 있는지, 상위 서버에서 보낸 명령으로 비용이 많이들 것인지 판단 할 수 있습니다.

+0

는 메시지 큐를 사용하는 대신 작업자 프로세스의 커플을 만들 수 없습니다? – Alfred

답변

1

Node.js는 다른 프로세스를 생성 할 수있는 능력이 있으며,이를 매우 잘 처리합니다. node.js 문서의 child_processes를 확인하십시오. 특히 fork 명령을 사용하면 다른 node.js 작업을 생성하고 메시지 채널을 통해 해당 노드와 통신 할 수 있습니다.

Node.js Child Processes Node.js Fork

http://nodejs.org/docs/latest/api/child_processes.html#child_process.fork

+0

이들은 스레드가 아니며 프로세스입니다. – Raynos

+0

물론 맞습니다. 나는 커피를 마시고 싶다! 답변이 업데이트되었습니다. –

+0

설명서에 따르면 "이 하위 노드는 여전히 V8의 완전히 새로운 인스턴스이며, 노드를 새로 시작하는 데 적어도 30ms의 메모리와 10MB의 메모리가 있다고 가정합니다. 즉, 수천 개의 노드를 생성 할 수 없습니다." 당신은 이것들을 많이 만들 수 없습니다. 그러나 당신이 그 많은 processess를 산란시키지 않으면 그것은 효과적 일 수 있습니다. – Alfred

관련 문제