Сколько памяти использует сокет потока 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 ответ
Я не знаю, в макушке головы, и это, вероятно, варьируется от платформы к платформе, но вот как вы можете узнать!
Используйте этот код:
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 байт, но он может отличаться на вашем.