6

socket.io サーバーのベンチマークを行いたい。サーバーが処理できる並列接続とメッセージの数をテストしたいと思います。

しかし、約 200 個の Websocket でベンチマークを開始すると、socket.io サーバーが数分後にクラッシュします。

node.jsのclusterモジュールを使って処理をコアに共有してみました。クラスター モジュールを使用すると、しばらくすると一部の接続が切断されます。

テストに使用するサーバーは、次のプロパティを持つ amazon クラウド上の仮想サーバーです。

  • 7GBのメモリ
  • 20 個の EC2 コンピューティング ユニット (それぞれ 2.5 個の EC2 コンピューティング ユニットを備えた 8 つの仮想コア)
  • 1690 GB のインスタンス ストレージ
  • 64 ビット プラットフォーム
  • I/O パフォーマンス: 高
  • 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 のセキュリティ メカニズムはありますか?

誰でも私を助けることができますか?

4

3 に答える 3

4

Socket.IO および SockJS サーバー実装のベンチマークを行いました。

結果はこちら

テスト スイート

Java で書かれており、3 つのトランスポートをサポートしています: Socket.IO 0.7+、SockJS 0.2+、raw Websockets。コンパイルされたバイナリはありませんが、Eclipse でコンパイルするか、コマンドライン javac を使用するだけです。

于 2012-06-11T10:23:41.807 に答える
3

私自身は Socket.IO のベンチマークを行っていませんが、参考になる 2 つの優れたリソースを知っているので、それらをチェックしてください。

于 2012-06-11T09:44:54.073 に答える