2011-05-16 67 views
3

当然,如果客户端速度太慢而无法读取服务器的写入数据,那么数据可以被缓存和增长[1]。在Node.js中,inet流套接字使用多少内存?

但是默认的缓冲区大小是多少?我假设它是/ proc/sys/net/ipv4/tcp_rmem和tcp_wmem(假设Linux)中配置的任何东西...

我正在尝试做一些基本的容量规划。如果我有一个512 MB RAM的VPS,并且我认为操作系统等会使用〜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 此外,在那些你开始遇到的操作系统连接数太多的问题开放 – 2011-05-16 19:21:19

+0

当然是的。我只是想获得一些基线数量的最大连接数/主机。我的计划是当客户端想要连接到“集群”时,有多个这些主机并将客户端指向负载最少的主机。但我需要知道什么时候需要更多面向客户端的主机。当然需要平均负载和其他指标,但我的应用程序并不是非常受CPU限制的,因此决定何时以及如何增长的主要因素是RAM。谢谢! – horton 2011-05-16 19:25:30

回答

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字节,但它可能会在你的不同。