저는 socket.io 기반 서버를 작성 중이므로 the pyramid of doom을 피하고 메모리를 적게 사용하려고합니다. 나는이 클라이언트를 작성했습니다 - http://jsfiddle.net/QUDXU/1/은 node client-cluster 1000
으로 실행됩니다. 그래서 1000 개의 연결이 끊임없이 요청하고 있습니다.Node js는 피라미드의 운명과 메모리가 동시에 증가하지 않도록합니다.
서버 측에서 테스트 한 3 가지 솔루션을 시도했습니다. 내가 할 서버에서 사용하는 RAM의 측면에서 결과 후 한 시간 동안 실행 모든은 다음과 같습니다
- 간단한 콜백 - http://jsfiddle.net/DcWmJ/~112메가바이트
- Q 모듈 - http://jsfiddle.net/hhsja/1/-850메가바이트 및
- 비동기 모듈을 증가 - http://jsfiddle.net/SgemT/ - 1.2GB 이상 증가
서버와 클라이언트가 서로 다른 컴퓨터에 있습니다. (Softlayer 클라우드 인스턴스). 노드 0.10.12 및 Socket.io 0.9.16
왜 이런 일이 발생합니까? 어떻게하면 메모리를 낮게 유지하고 코드를 읽을 수있게 해주는 일종의 라이브러리를 사용할 수 있습니까?
첫 번째 옵션은 도움이되지 않습니다. 나는 서버의 메모리 사용에 대해서만 염려한다. 클라이언트는 서버를 테스트하기 위해 생성됩니다. 두 번째 옵션에 대해서, 프로세스가 실제로 더 많은 메모리를 필요로한다면 --max-stack-size로 설정하면 어떨까요? –
프로세스가 더 많은 메모리를 필요로한다면, 프로세스가 그것을 소비하게하십시오. 한계에 도달하면 메모리가 결국 해제됩니다. – randunel
약한 참조가 작동하는 방법을 알려주십시오. – randunel