Benchmarkt socket.io
Я хочу сравнить мой сервер socket.io. Я хочу проверить, сколько параллельных соединений и сообщений может обработать сервер.
Но мой сервер socket.io зависает через несколько минут, когда я запускаю тест с примерно 200 веб-сокетами.
Я попытался использовать кластерный модуль node.js, чтобы разделить процесс с ядрами. Когда я использую модуль кластера, через некоторое время некоторые соединения отключаются.
Сервер, который я использую для теста, является виртуальным сервером в облаке Amazon с такими свойствами:
7 GB of memory 20 EC2 Compute Units (8 virtual cores with 2.5 EC2 Compute Units each) 1690 GB of instance storage 64-bit platform I/O Performance: High API name: 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());
}
}
А вот код сокета .io-сервера:
socket.on('message',function(message){
start = new Date().getTime();
socket.send(message);
end = new Date().getTime() - start;
logfile.write(end+"\n");
});
Есть ли в socket.io какие-либо механизмы безопасности, которые блокируют столько параллельных сообщений и соединений, образующих клиента?
Кто-нибудь может мне помочь?