Сколько памяти использует сокет потока inet в Node.js?

Конечно, данные могут буферизироваться и увеличиваться, если клиент слишком медленно читает записи сервера [1].

Но каков размер буфера по умолчанию? Я предполагаю, что все, что настроено в /proc/sys/net/ipv4/tcp_rmem и tcp_wmem (при условии Linux)...

Я пытаюсь сделать базовое планирование мощности. Если у меня VPS с 512 МБ ОЗУ, и я предполагаю, что ОС и др. Будут использовать ~ 100 МБ, у моего приложения будет ~ 400 МБ для всего, что он хочет сделать. Если каждому подключенному клиенту (обычному старому сокету TCP/IP) требуется, скажем, 8 КБ (чтение 4 КБ, запись 4 КБ), у меня есть емкость на 400 МБ / 8 КБ = ~ 50000 клиентов.

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

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 localhost $port', используя номер порта, который выдает сценарий при запуске, и просмотрите выходные данные, чтобы увидеть, какой наибольший размер чанка. На моей машине с OS X похоже, что самый большой буфер составляет 40960 байт, но он может отличаться на вашем.

Другие вопросы по тегам