3

当然,如果客户端太慢而无法读取服务器的写入 [1],数据可以被缓冲并增长。

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

我正在尝试做一些基本的容量规划。如果我有一个具有 512 MB RAM 的 VPS,并且我假设操作系统等人将使用 ~ 100 MB,那么我的应用程序将有 ~ 400 MB 用于它想做的任何事情。如果每个连接的客户端(常规的旧 TCP/IP 套接字)默认需要 8KB(4KB 读取,4KB 写入),我有 400MB / 8KB = ~ 50000 个客户端的容量。

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

4

1 回答 1

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());
});

然后通过'nc localhost $port'使用脚本启动时吐出的端口号来cat一个大文件(如ISO),并观察输出以查看最大的块大小是多少。在我的 OS X 机器上,最大的缓冲区看起来是 40960 字节,但在你的机器上可能会有所不同。

于 2011-05-16T23:31:26.867 回答