我想使用node.js,socket.io和socket.io-client运行压力测试.
我想获得网络带宽,处理器/内存使用等.
我在亚马逊上有一个node.js socket.io服务器,大小为XLARGE.
现在我想在其他亚马逊服务器上运行多个socket.io-clients,并将它们连接到我的服务器.
我在不同的进程中运行它,但是一个node.js进程占用15MB内存.我想同时测试100k socket.io连接,所以这不是一个选项.
我的问题是:我可以在一个node.js实例中运行60k个不同的socket.io-clients吗?
这是我的客户端代码:
var socket = require('socket.io-client')('http://someAddress:3000'); socket.on('connect',function(){ socket.on('news',function(data){ }); socket.emit('event',{ data: "Connection test." }); });
解决方法
你必须传递forceNew选项:
var socket = require('socket.io-client')('http://someAddress:3000',{ forceNew: true });
然后在循环中初始化套接字.
这是一个完整的测试示例:
server.js:
var io = require('socket.io')(); io.on('connection',function(socket){ var i = 0; setInterval(function() { socket.emit('news',{ message: i++ }); },1000); }); io.listen(3000);
客户端,JS:
function testOne() { var socket = require('socket.io-client')('http://127.0.0.1:3000',{forceNew: true}); socket.on('connect',function(){ socket.on('news',function(data){ console.log(data.message); }); }); } for (var i = 0; i < 5; i++) { testOne(); }
出于测试目的,我让客户端每秒输出递增数五次.