【问题标题】:In a Node.js HTTP server's listen() method, what is the backlog parameter?在 Node.js HTTP 服务器的 listen() 方法中,什么是 backlog 参数?
【发布时间】:2021-09-27 01:06:48
【问题描述】:

here提到的积压参数:

所有listen() 方法都可以带一个backlog 参数来指定待处理连接队列的最大长度。实际长度将由操作系统通过 sysctl 设置确定,例如 Linux 上的 tcp_max_syn_backlog 和 somaxconn。此参数的默认值为 511(不是 512)。

对此参数的更全面的解释将不胜感激。阅读该描述后想到的一些问题:

  • 连接“待定”与接受的时间是什么时候?
  • 您如何最大限度地解决backlog 的限制?
  • 超过backlog参数会发生什么情况,是否返回错误?

【问题讨论】:

    标签: node.js http server


    【解决方案1】:

    此参数将帮助您限制与服务器的连接,从而保护它免受“连接过多”问题的影响。

    没有此参数,您的服务器将(理论上说并且没有操作系统限制)接受任意数量的连接。而且由于每个连接都会消耗底层计算机的内存,当与服务器的连接过多并且服务器将停止运行或至少以意想不到的方式运行时,您将遇到“内存不足”的情况。

    接收过多的连接可能是正常的(太多有效用户试图使用您的服务器)或异常的(DOS/DDOS 攻击的结果)。在所有情况下,最好限制服务器可以处理的连接数以确保高质量的服务(超过限制的连接将被“策略”拒绝)。

    希望 Linux 设置了一些系统范围的限制,例如 tcp_max_syn_backlogsomaxconn。即使您将backlog 参数设置为较高的值,Linux 也会对其进行检查以使其与为这两个系统参数设置的值保持一致。您可以在post 中阅读有关此功能的更多信息。

    【讨论】:

      猜你喜欢
      • 2011-07-03
      • 1970-01-01
      • 2010-09-12
      • 1970-01-01
      • 1970-01-01
      • 2015-10-15
      • 2018-06-22
      • 1970-01-01
      相关资源
      最近更新 更多