我有一个运行@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
创建一个新连接。例如:
var socket = io.connect(server, { "force new connection": true });
此外,如果您想提高出站 TCP 连接限制(似乎默认为每个目标 5 个连接),请执行以下操作
require('http').globalAgent.maxSockets = 1000;
连接之前。
但请注意,快速创建和关闭 tcp 套接字会使 TCP 连接堆积在 TIME_WAIT
状态,这取决于您的 OS and your network settings您很快就会达到极限,这意味着您必须等待那些旧套接字超时才能建立新连接。
如果我没记错的话,Windows(Server 2008 R2 和 Windows 7)上的限制是大约 16k 个连接(每个目标 ip/端口组合),Windows 中的默认 TIME_WAIT
超时是 4 分钟,所以如果您在 Windows 上 4 分钟内创建超过 16k 个连接,您可能会撞墙。
关于node.js - 可以模拟多个并发连接来测试 nodejs 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16810148/