我怎样才能找出为什么nodejs没有干净利落?

时间:2014-10-13 10:25:46

标签: node.js sockets

让我先解释一下“干净利落”的意思。

如果我有一个nodejs应用程序并且我做了很长时间的setTimeout,或者如果我打开一个我没有关闭的套接字连接,那么当我运行该应用程序时它将不会退出。原因很清楚,我认为是一个好的,nodejs的工作方式是等到“没有更多工作要做”,排序,然后退出。这很好,我喜欢这种操作方式。这也迫使我对干净地关闭插座并且没有躺着的计时器有点自律。另一件好事。

但是,我遇到的问题是我被赋予了一些不符合这个规则的代码,并且它没有完全退出。我怀疑某个地方的代码留下了一个打开的套接字,但是代码被缩小了,所以找到打开这个套接字的点并不容易。

我的问题是,有没有办法可以查询nodejs找出哪些套接字是打开的?通过看到这样一个带有ip号码的列表,我可以开始挖掘,找出代码打开的位置。

1 个答案:

答案 0 :(得分:4)

我写了一个包来帮助解决这个问题:wtfnode

我偶然发现了这个问题,同时试图弄清楚为什么我会获得与我一样多的下载量;虽然这个问题现在很老了,但我想这可能会帮助将来寻找类似术语的人。

如果没有来自原始帖子的更多信息,很难说出你的具体问题是什么,但是由于HTTP保持活跃(作为客户端或服务器),一种可能性是延迟套接字。

相关问题