gpt4 book ai didi

node.js - 基准 socket.io

转载 作者:搜寻专家 更新时间:2023-10-31 22:42:38 25 4
gpt4 key购买 nike

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

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

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

我用于测试的服务器是亚马逊云上的虚拟服务器,具有以下属性:

  • 7 GB 内存
  • 20 个 EC2 计算单元(8 个虚拟内核,每个内核有 2.5 个 EC2 计算单元)
  • 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 上是否有任何安全机制可以阻止来自客户端的如此多的并行消息和连接?

谁能帮帮我?

最佳答案

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

Here are the results

Test suite

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

关于node.js - 基准 socket.io,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10977345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com