【问题标题】:Lots of requests as TIME_WAIT - will this cause concurrency issues for a node.js server?TIME_WAIT 的大量请求 - 这会导致 node.js 服务器的并发问题吗?
【发布时间】:2013-11-13 09:44:23
【问题描述】:

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

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

看起来大多数连接已关闭并正在等待。我想这在重负载下会很好地工作。

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

【问题讨论】:

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


    【解决方案1】:

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

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

    TIME-WAIT 状态是 TCP 安全性的重要组成部分,不应被混淆。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2014-04-16
        • 1970-01-01
        • 2023-03-28
        • 2015-09-06
        • 2011-01-16
        • 2013-12-22
        • 1970-01-01
        • 1970-01-01
        • 2017-04-21
        相关资源
        最近更新 更多