![](/img/trans.png)
[英]Are there potential issues with concurrent connections to a nodejs app deployed behind nginx?
[英]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相关
特别是-上述问题的作者使用的测试程序
编辑 :
您可以使用以下工具检查您的服务器每秒可以处理多少个请求
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.