Benchmarkt socket.io

Ich möchte meinen socket.io-Server einem Benchmark unterziehen. Ich möchte testen, wie viele parallele Verbindungen und Nachrichten der Server verarbeiten kann.

Aber mein socket.io Server stürzt nach einigen Minuten ab, wenn ich den Benchmark mit ca. 200 Websockets starte.

Ich habe versucht, das Cluster-Modul von node.js zu verwenden, um den Prozess für die Kerne freizugeben. Wenn ich das Cluster-Modul verwende, werden einige Verbindungen nach einiger Zeit getrennt.

Der Server, den ich für den Test verwende, ist ein virtueller Server in der Amazon Cloud mit den folgenden Eigenschaften:

7 GB Speicher20 EC2-Recheneinheiten (8 virtuelle Kerne mit jeweils 2,5 EC2-Recheneinheiten)1690 GB Instanzspeicher64-Bit-PlattformE / A-Leistung: HochAPI-Name: c1.xlarge

Hier ist der Code des Benchmark-Clients:

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

Und hier der Code des socket.io-Servers:

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

Gibt es Sicherheitsmechanismen in socket.io, die so viele parallele Nachrichten und Verbindungen von einem Client blockieren?

Kann mir jemand helfen?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage