我有一个运行@localhost的简单node.js /socket.io(websockets)应用程序。我试图看看它可以处理多少并发连接。是否可以在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毫秒发送一条新消息,并且不会模拟并发连接。
答案 0 :(得分:5)
在致电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上的限制是大约16k连接(每个目标ip / port组合)(Server 2008 R2和Windows 7),Windows中的默认TIME_WAIT
超时是4分钟,所以如果你创建在Windows上4分钟内超过16k连接,你可能会碰壁。
答案 1 :(得分:1)
点击此处:
具体 - 上述问题的作者使用的测试程序
修改强>:
您可以使用以下工具检查服务器每秒可以提供的请求数