我有一台运行node.js(v0.1.32)的机器,带有tcp服务器(tcp.createServer)和http服务器(http.createServer)。 http服务器受到来自端口80上的基于彗星的应用程序的长轮询请求(每个持续50秒)的影响。并且在i80应用程序的端口8080上存在用于相同目的的tcp套接字连接。
发现服务器无法处理更多连接(特别是tcp连接,而http连接看起来很好!! ??)一段时间后才恢复正常。
对于连接的负载测试,我创建了一个tcp服务器并生成了2000个请求,并发现在达到机器上的最大文件描述符限制后连接开始失败(默认为1024)。这是一个非常小的数字。
所以,这里有一个新手问题:如何扩展我的应用程序以处理node.js上更多的连接以及我如何处理这个问题。
有没有办法找出目前有多少活动连接?
由于 沙里夫
答案 0 :(得分:3)
因此,检查我使用lsof的打开连接,它给出了打开文件的列表,并计算了通过我使用的每个端口打开了多少连接。
答案 1 :(得分:2)
我不知道是否有一种内置方法可以获得与Node的活动连接数,但是很容易安装。
对于我的彗星式节点应用程序,我保留一个对象,我将连接添加为属性。每隔X秒,我会遍历该对象并查看是否有任何应该关闭的连接(在您的情况下,任何超过50秒限制的连接)。
关闭连接时,只需从连接对象中删除该属性即可。然后,您可以使用Object.size(connections)
答案 2 :(得分:1)
您可以通过以下方法获得连接计数:
var server = http.createServer(app);
server.getConnections(function(error, count) {
console.log(count);
});
使用此方法可以继续检查连接,当连接超过阈值时,再关闭以前的连接。希望能帮助到你。