可以模拟几个并发连接来testingnodejs应用程序
我有一个简单的node.js /socket.io(websockets)应用程序运行@localhost。 我想看看它可以处理多less个并发连接。 是否有可能在本地模拟几个并发用户?
这是我使用socket.io-client的一半尝试:
function connectAndSend(){ socket.emit('qand',{ code :'ubuntu' }); } socket.on('connect', function () { }); socket.on('q', function (data) { console.log(data); }); function callConnect(){ console.log('calling'); connectAndSend() ; setTimeout(callConnect,100) ; } callConnect() ;
正如我所看到的,这只是每隔100毫秒发出一个新消息,而不是模拟并发连接。
在您的connect
呼叫中,您必须通知socket.io为每个要connect
呼叫创build一个新的connect
。 例如:
var socket = io.connect(server, { "force new connection": true });
此外,如果您想提高出站TCP连接限制(似乎默认为每个目标5个连接),请执行类似操作
require('http').globalAgent.maxSockets = 1000;
连接之前。
但是请注意,创build和closurestcp套接字的速度会使得TCP连接在TIME_WAIT
状态下堆积起来,根据您的操作系统和networking设置,您很快就会遇到一个限制,这意味着您必须等待那些旧的套接字超时,然后才能build立新的连接。 如果我没有记错,Windows(包括Server 2008 R2和Windows 7)上的限制约为16k(每个目标IP /端口组合),Windows中默认的TIME_WAIT
超时为4分钟,所以如果创build超过16k的连接在Windows上4分钟内,你可能会碰壁。
在这里检查:
与Node.js的长连接,如何减less内存使用并防止内存泄漏? 还与V8和webkit-devtools相关
特别是 – 上述问题作者使用的testing程序
编辑 :
您可以使用以下工具来检查您的服务器每秒可以处理多less个请求