繁体   English   中英

可以模拟多个并发连接以测试Node.js应用

[英]Possible to simulate several concurrent connections to test a nodejs app

我有一个运行@localhost的简单node.js /socket.io(websockets)应用程序。 我正在尝试查看它可以处理多少个并发连接。 是否可以在本地主机上模拟多个并发用户?

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

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

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

require('http').globalAgent.maxSockets = 1000;

在连接之前。

但是请注意,快速创建和关闭tcp套接字将使TCP连接在TIME_WAIT状态下堆积起来,并且取决于您的操作系统和网络设置,您很快就会达到极限,这意味着您必须等待那些旧的套接字在建立新连接之前超时。 如果我没记错的话,Windows(服务器2008 R2和Windows 7两者)的限制大约为16,000个连接(每个目标ip /端口组合),Windows中的默认TIME_WAIT超时为4分钟,因此,如果您创建的连接超过16k在Windows上4分钟内,您可能会碰壁。

在这里检查:

与Node.js的长期联系,如何减少内存使用并防止内存泄漏? 也与V8和webkit-devtools相关

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

编辑

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM