Проведение стресс-тестирования на TCP-сервере

Мы используем node.js (версия 0.6.11) в CentOS (версия 6.0) для создания TCP-сервера. Во время стресс-тестирования я обнаружил проблему:

Использование процессора node.js deamon составляет всего около 5 ~ 6%, когда установлено менее 1150 соединений. Но он быстро увеличивается до 100%, когда устанавливается еще несколько подключений.

Кто-нибудь знает, почему так работает? Это ошибка в node.js?

Вот демонстрационный код:

var net = require("net");
var server = net.createServer(function(socket)
{
    socket.setEncoding("utf8");
    socket.on('close',
        function()
        {
            console.log('close');
        });
    socket.on('disconnect',
        function()
        {
            console.log('disconnect');
        });
    socket.on("data", function(data)
        {
//          console.log("recv");            
        });
});

server.listen(8080, "192.168.2.105");
console.log("Server on 8080");

person seallee    schedule 23.03.2012    source источник
comment
Как именно вы протестируете этот код? В противном случае я бы посоветовал вам опубликовать на странице выпуска github.   -  person Alfred    schedule 23.03.2012
comment
Я уже это сделал. github.com/joyent/node/issues/2987#issuecomment -4650835   -  person seallee    schedule 23.03.2012


Ответы (1)


Попробуйте перейти на Node.js 0.6.13. Это могла быть утечка памяти.

person Community    schedule 23.03.2012
comment
Совершил глупую ошибку, забыл изменить количество открытых файлов. - person seallee; 26.03.2012