很多请求都是TIME_WAIT - 这会导致node.js服务器出现并发问题吗?

时间:2013-11-02 06:19:41

标签: node.js http tcp nginx time-wait

当我在nginx上运行apachebench时 - > node.js服务器,我注意到在设置了一定数量的并发请求后,一些请求没有被跟踪完成。 ss -s输出的结果如下:

TCP:   26006 (estab 660, closed 25296, orphaned 38, synrecv 0, timewait 25295/0), ports 0

看起来大多数连接已经关闭并且正在等待。我想这在重负荷下会很好用。

是否可以更快地“回收”这些连接?它们似乎持续了很长时间(10秒左右?)

2 个答案:

答案 0 :(得分:0)

他们实际上持续了两分钟。它们不是“请求”而是连接,它们都已关闭。

您应确保设置了合理的HTTP keepalive间隔,以便对等方可以为多个HTTP请求重用TCP连接器。

TIME-WAIT状态是TCP安全性的一个重要部分,不应该被搞乱。

答案 1 :(得分:0)

This可能有助于解释为什么TIME_WAIT存在以及这些连接最初是如何在TIME_WAIT中结束的。

我很想知道你是否在一台机器上运行测试,如果是这样,它可能是客户端或服务器端在TIME_WAIT中留下套接字。如果它是测试的客户端,那么你真的不必担心这么多。如果您在一台计算机上运行测试,则将其拆分,以便您自己拥有服务器,以便可以看到生成TIME_WAIT的内容。

如果服务器正在生成TIME_WAITS,那么您需要弄清楚为什么要在服务器上启动主动关闭,并查看将该主动关闭移动到客户端是否切实可行。