我有一个简单的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相关
,特别是-上述问题的作者使用的测试程序
编辑:
您可以使用以下工具来检查服务器每秒能够处理多少个请求
-
ab ——http://httpd.apache.org/docs/2.2/programs/ab.html
围困 ——http://www.joedog.org/siege-home/