2011-05-16 2 views
3

물론 클라이언트가 서버의 쓰기를 읽기에는 너무 느리면 데이터를 버퍼링하고 증가시킬 수 있습니다 [1].Inet 스트림 소켓은 Node.js에서 얼마나 많은 메모리를 사용합니까?

하지만 기본 버퍼 크기는 무엇입니까? 나는 그것이/proc/sys/net/ipv4/tcp_rmem과 tcp_wmem (리눅스를 가정 함)에 설정되어 있다고 가정합니다 ...

몇 가지 기본 용량 계획을 세우려고합니다. 512MB RAM의 VPS가 있고 OS 등이 ~ 100MB를 사용한다고 가정하면 내 응용 프로그램은 ~ 400MB로하고 싶어합니다. 연결된 각 클라이언트 (일반 TCP/IP 소켓)에 기본적으로 8KB (4KB 읽기, 4KB 쓰기)가 필요하면 400MB/8KB = ~ 50000 개의 클라이언트 용량이 있습니다.

[1] http://nodejs.org/docs/v0.4.7/api/all.html#socket.bufferSize

+1

저는 여기에 대한 구체적인 내용을 걱정할 필요가 없다고 생각합니다. 올바른 위치에 있고 정확한 숫자가 25,000 또는 40,000 또는 60,000인지 여부에 상관없이 ___ 동시 대 _ 사용자의 수를 초과하면 VPS에서 조금 더 많은 메모리를 사용할 수 있습니다. P 너무 많은 연결이 열려있는 OS로 문제가 발생하기 시작하는 번호 –

+0

물론 사실입니다. 난 그냥 최대 연결/호스트의 기본 숫자를 얻으려고하고 있어요. 제 계획은 클라이언트가 "클러스터"에 연결하기를 원할 때 이들 호스트를 다수 보유하고 가장 적게로드 된 호스트에 클라이언트를 연결하는 것입니다. 하지만 클라이언트 측 호스트가 더 필요할 때를 알 필요가 있습니다. 확실한 평균로드 및 기타 메트릭이 필요하지만 내 앱이 CPU에 묶여 있지 않아 언제 어떻게 성장할 지 결정하는 데있어 중요한 요소는 RAM입니다. 감사! – horton

답변

1

난 내 머리 위로 떨어져 모르는 그것은 아마도 플랫폼에 따라 다릅니다 그러나 여기에서 당신이 찾을 수있는 방법입니다!

사용이 코드 :

var net = require('net'); 

net.createServer(function (socket) { 
    socket.on('data', function(data) { 
     console.log('chunk length: ' + data.length); 
    }); 
}).listen(function() { 
    console.log("Server listening on %j", this.address()); 
}); 

그리고 다음을 통해 (이 ISO와 같은) 큰 파일 고양이 'NC 로컬 호스트 $ 포트'시작할 때 스크립트가 밖으로 뱉어하는 포트 번호를 사용하고, 볼 출력을 사용하여 가장 큰 청크 크기를 확인합니다. 내 OS X 컴퓨터에서는 가장 큰 버퍼가 40960 바이트 인 것처럼 보일 수 있지만 사용자 환경에 따라 다를 수 있습니다.

관련 문제