可以模拟几个并发连接来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个请求

  1. abhttp://httpd.apache.org/docs/2.2/programs/ab.html

  2. 围攻http://www.joedog.org/siege-home/