首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Benchmarkt socket.io

Benchmarkt socket.io
EN

Stack Overflow用户
提问于 2012-06-11 09:20:42
回答 3查看 10.2K关注 0票数 6

我想对我的socket.io服务器进行基准测试。我想测试服务器可以处理多少并行连接和消息。

但是当我用大约200个websockets启动基准测试时,我的socket.io服务器在几分钟后就崩溃了。

我尝试使用node.js的集群模块将进程共享到内核。当我使用集群模块时,一些连接会在一段时间后断开连接。

用于测试的服务器是amazon云上的一个虚拟服务器,具有以下属性:

  • 7 GB内存
  • 20个EC2计算单元(8个虚拟核,每个核心2.5个EC2计算单元)
  • 1690 GB实例存储
  • 64位平台
  • I/O性能:高
  • API名称: c1.xlarge

下面是基准测试客户端的代码:

代码语言:javascript
复制
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-服务器的代码:

代码语言:javascript
复制
socket.on('message',function(message){
    start = new Date().getTime();
    socket.send(message);
    end = new Date().getTime() - start;
    logfile.write(end+"\n");
});

socket.io上是否有任何安全机制阻止来自客户端的这么多并行消息和连接?

有人能帮我吗?

EN

回答 3

Stack Overflow用户

发布于 2012-06-11 10:23:41

我对Socket.IO和SockJS服务器实现进行了基准测试。

以下是结果

测试套件

用Java编写,支持3种传输: Socket.IO 0.7+、SockJS 0.2+、原始Websockets。没有编译的二进制文件,但是您可以让Eclipse编译它,或者只使用命令行javac。

票数 4
EN

Stack Overflow用户

发布于 2012-06-11 09:44:54

我自己并没有对Socket.IO进行基准测试,但我知道有两个好的资源可以帮助您,所以请检查它们:

  • http://drewww.github.com/socket.io-benchmarking/
  • http://blog.mixu.net/2011/11/22/performance-benchmarking-socket-io-0-8-7-0-7-11-and-0-6-17-and-nodes-native-tcp/
票数 3
EN

Stack Overflow用户

发布于 2016-01-22 18:49:14

你可以检查一下Akinji

它向服务器打开并发套接字,侦听给定的消息并打印它们。

http://github.com/sonsuzdongu/akinji

代码语言:javascript
复制
python akinji.py -c 100 --host localhost --port 3000 --waitFor 100 --on "some msg"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10977345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档