各位好: 最近在用socket.io,所以做了一些测试,但是测试结果不如预期,怀疑是我自己的代码有问题。 我用socket.io,开了28 * 140 共3920个连接。我测试的结果是,从第一个连接创建到最后一个,总共花费了5秒到7秒多。我本机是 mac ,2.4 GHz Intel Core i5, 内存 4 GB。 我显示怀疑是我本机的问题,后来换了服务器,E5-2650 双核 4G内存。但是测试结果是一样的,都是5秒左右,cpu最高使用15%左右,内存最少剩余2G, 我的问题是,这个结果是正确的么,网上好多上万的连接,创建也比我的时间少。
server计时规则为:第一个连接创建完为开始时间记为conn_s,最后一个连接创建完为结束时间记为conn_e;每创建一个连接,给客户端发送一段字符串。
client计时规则为:程序开始即开始计时记为c_s,第一次收到服务端消息记为conn_s,最后一次收到消息记为conn_e。
实际结果是,服务端从开始到结束需3.8s,客户端,开始计时到第一收到消息为3.0秒,再到最后一次收到消息,又是3.6秒。
代码如下 server.js
var io = require('socket.io')(8082, {
transports: ['websocket']
});
//开始时间
var conn_s = 100000000000000000000000000000;
//结束时间
var conn_e = 123;
io.on('connection', function (socket) {
socket.emit("msg", "test123");
var t = new Date().getTime();
if(t < conn_s){
conn_s = t;
}
conn_e = t;
});
setInterval(() => {
console.log("s>>" + conn_s + ">>e>>" + conn_e + ">>" + (conn_e - conn_s));
}, 1000);
client.js
var io = require('socket.io-client');
//房间数量
var roomsNum = 28;
//每个房间人数
var roomUserNum = 140;
var c_s = new Date().getTime();
var conn_s = 100000000000000;
var conn_e = new Date().getTime();
for (var rIndex = 0; rIndex < roomsNum; rIndex++) {
for (var uIndex = 0; uIndex < roomUserNum; uIndex++) {
var socket = io('http://127.0.0.1:8082', {transports: ['websocket']});
socket.on('msg', function () {
conn_e = new Date().getTime();
if (conn_e < conn_s) {
conn_s = conn_e;
}
});
}
}
setInterval(() => {
console.log("c_s>>" + c_s + ">>" + (conn_s - c_s) + ">>s>>" + conn_s + ">>e>>" + conn_e + ">>" + (conn_e - conn_s));
}, 1000);