可以模拟多个并发连接来测试nodejs应用程序



我有一个简单的node.js/socket。IO (websockets)应用程序运行@localhost。我想看看它能处理多少并发连接。是否可以在localhost上模拟多个并发用户?

这是我使用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。为每次呼叫connect创建一个新连接。例如:

var socket = io.connect(server, { "force new connection": true });

另外,如果您想提高出站TCP连接限制(似乎默认为每个目标5个连接),请执行如下操作

require('http').globalAgent.maxSockets = 1000;
连接前

但是请注意,快速创建和关闭tcp套接字将使tcp连接堆积在状态TIME_WAIT,并且根据您的操作系统和网络设置,您将很快达到限制,这意味着您将不得不等待旧套接字超时,然后才能建立新的连接。如果我没记错的话,在Windows (Server 2008 R2和Windows 7)上的限制是大约16k连接(每个目标ip/端口组合),Windows中默认的TIME_WAIT超时是4分钟,所以如果您在Windows上4分钟内创建超过16k连接,您可能会遇到这堵墙。

查看此处:

长连接与Node.js,如何减少内存使用和防止内存泄漏?也与V8和webkit-devtools相关

,特别是-上述问题的作者使用的测试程序

编辑:

您可以使用以下工具来检查服务器每秒能够处理多少个请求

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

  2. 围困
  3. ——http://www.joedog.org/siege-home/

相关内容

  • 没有找到相关文章

最新更新