我怎么知道为什么nodejs不能干净地退出?

首先让我先解释我的意思是“干净地退出”。

如果我有一个nodejs应用程序,我真的很长时间setTimeout,或者如果我打开一个套接字连接,我不closures,然后当我运行该应用程序不会退出。 原因很清楚,我认为,nodejs的工作方式是等到“没有更多的工作要做”,然后退出。 这很好,我喜欢这种操作方式。 这也迫使我对于closures套接字而没有定时器的训练有点谨慎。 另一件好事。

但是,我有一个问题,就是我给了一些不遵守这个规定的代码,而且没有干净地退出。 我怀疑代码在某处留下了一个打开的套接字,但代码被缩小了,所以find这个套接字打开的位置并不那么容易。

我的问题是,有没有一种方法,我可以查询nodejs找出哪些套接字打开? 通过查看这样一个列表与ip号码,我可以开始挖掘找出代码是哪里打开他们。

我写了一个包来帮助这个: wtfnode

我偶然发现了这个问题,试图弄清楚为什么我的下载量和我一样多。 虽然这个问题现在已经很老了,但是我想这也许会帮助别人在将来寻找类似的术语。

没有更多的原始信息,很难说你的具体问题是什么,但是有一种可能性是HTTP保持活跃(无论是作为客户端还是服务器)。