如何检查node.js中打开连接的数量?

我有一台机器使用tcp服务器(tcp.createServer)和http服务器(http.createServer)运行node.js(v0.1.32)。 HTTP服务器被来自基于彗星的应用程序在端口80上的长轮询请求(每个持续50秒)命中。并且为了相同的目的,在iphone应用程序的端口8080上存在tcp套接字连接。

发现服务器无法处理更多的连接(特别是TCP连接,而http连接看起来不错!!)一段时间,只有重新启动后才正常。

对于负载testing连接,我创build了一个tcp服务器,并产生了2000个请求,并指出在达到机器上的最大文件描述符限制(缺省为1024)之后,连接开始失败。 这是一个非常小的数字。

所以,这里有一个新手问题:如何扩展我的应用程序以处理node.js上更多的连接,以及如何处理这个问题。

有没有办法找出目前有多less活动连接?

感谢Sharief

嘿,乔伊! 我正在寻找一个unix解决scheme,可以帮助我找出在我的机器上的某个特定时刻打开的连接数。 原因是我的服务器在一定数量的连接之后无法处理请求。 并认为我的机器一次只能处理1024个打开的连接,即默认为1024的ulimit文件描述符值。我已经通过设置符合我的要求的ulimit -n来修改了这个值。

所以要检查打开的连接,我用lsof给了我打开的文件的列表,并计算出通过我使用的每个端口打开多less个连接。

我不知道是否有一个内置的方式来获得与Node的活动连接数量,但是很容易操作。

对于我的彗星风格的节点应用程序,我保留一个对象,我添加连接作为属性。 每X秒我遍历该对象,看看是否有任何连接,应该被closures(在你的情况,任何超过你的50秒的限制)。

closures连接时,只需从连接对象中删除该属性即可。 然后你可以看到有多less个连接随着Object.size(connections)