Benchmarkt socket.io

Я хочу протестировать свой сервер socket.io. Я хочу проверить, сколько параллельных соединений и сообщений может обрабатывать сервер.

Но мой сервер socket.io падает через несколько минут, когда я запускаю тест примерно с 200 веб-сокетами.

Я попытался использовать кластерный модуль node.js, чтобы разделить процесс между ядрами. Когда я использую модуль кластера, некоторые соединения через некоторое время отключаются.

Сервер, который я использую для теста, представляет собой виртуальный сервер в облаке amazon со следующими свойствами:

  • 7 ГБ памяти
  • 20 вычислительных блоков EC2 (8 виртуальных ядер с 2,5 вычислительными блоками EC2 в каждом)
  • 1690 ГБ хранилища инстансов
  • 64-битная платформа
  • Производительность ввода-вывода: Высокая
  • Имя API: c1.xlarge

Вот код бенчмарк-клиента:

var fs = require('fs');
var io = require("socket.io-client");
var host = "http://localhost:3000";
var timeLog = fs.createWriteStream(__dirname+'/public/time.log',{flags:'a',mode:0666,   encoding:'encoding'});
var count = 200;
var sockets = [];
var total = 0;
var countTime = 0; 
var echo = exports;
echo.start = function() {
    fs.writeFile('public/time.log',"",function(err){
        if(err) throw err;
    });

    for(var i=0;i<count;i++){
        var socket = io.connect(host,{"force new connection":true});
        sockets.push(socket);
        //console.log(i);
        socket.on("message",function(message){
            countTime++;
            time = new Date().getTime()-message;
            total+=time;
            timeLog.write(time+"\n");
            socket.send(new Date().getTime());
        });
        socket.on("disconnect",function(){
            console.log("disconnect");
        });
    }

    parallelSockets();
    var j = 0;
}

function parallelSockets(){
    for(var i = 0 ;i<count;i++){
        sockets[i].send(new Date().getTime());
    }
}

А вот код socket.io-server:

socket.on('message',function(message){
    start = new Date().getTime();
    socket.send(message);
    end = new Date().getTime() - start;
    logfile.write(end+"\n");
});

Существуют ли какие-либо механизмы безопасности на socket.io, которые блокируют так много параллельных сообщений и соединений от клиента?

Кто-нибудь может мне помочь?

5
задан franzlorenzon 3 May 2013 в 08:17
поделиться