【问题标题】:tcp_tw_reuse vs tcp_tw_recycle : Which to use (or both)?tcp_tw_reuse vs tcp_tw_recycle :使用哪个(或两者)?
【发布时间】:2011-09-19 13:18:18
【问题描述】:

我有一个使用大量连接的网站和应用程序。它通常有大约 3,000 个静态打开的连接,并且可以在几秒钟的时间内接收 5,000 到 50,000 个连接尝试。

由于 TIME_WAIT 状态套接字,我遇到了无法打开新连接的本地端口的问题。即使 tcp_fin_timeout 设置为较低的值 (1-5),这似乎只是导致过多的开销/减速,并且偶尔仍无法打开新的套接字。

我查看了 tcp_tw_reuse 和 tcp_tw_recycle,但我不确定其中哪一个是首选,或者是否可以同时使用这两个选项。

【问题讨论】:

  • 你尝试过套接字选项 SO_REUSEADDR 了吗?
  • cat /proc/sys/net/ipv4/ip_local_port_range 的输出是什么?如果不是 1024 65535,您可以使用 echo 1024 65535 > /proc/sys/net/ipv4/ip_local_port_range 更改它

标签: linux networking tcp


【解决方案1】:

根据Linux documentation,您应该使用 TCP_TW_REUSE 标志来允许重用处于 TIME_WAIT 状态的套接字以进行新连接。

在处理必须处理许多处于 TIME_WAIT 状态的短 TCP 连接的 Web 服务器时,这似乎是一个不错的选择。

here 所述,TCP_TW_RECYCLE 在使用负载平衡器时可能会导致一些问题...

编辑(添加一些警告;)):

正如@raittes 在评论中提到的,“使用负载平衡器时的问题”与面向公众的服务器有关。启用回收后,服务器无法区分来自同一 NAT 设备后面不同客户端的新传入连接。

【讨论】:

  • “使用负载平衡器时的问题”与面向公众的服务器有关。启用回收后,服务器无法区分来自同一 NAT 设备后面不同客户端的新传入连接。
  • 根据 Vincent Bernat 的帖子(vincent.bernat.ch/en/blog/2014-tcp-time-wait-state-linux,在另一个答案中也引用了),TCP_TW_REUSE 仅对传出连接有用,对传入连接没有影响。不过,我尚未独立验证此声明。
  • Christoph Linux kernel docs 没有提及这一点。 TIME_WAIT 状态仅适用于关闭连接的一侧(即“主动关闭”),它高度依赖于协议。对于 HTTP,正如原始问题所引用的那样,它将是服务器端。
【解决方案2】:

注意:net.ipv4.tcp_tw_recycle 已经是 Linuxin 4.12 (4396e46187ca tcp: remove tcp_tw_recycle) 中的 removed

来源:https://vincent.bernat.im/en/blog/2014-tcp-time-wait-state-linux

【讨论】:

【解决方案3】:

pevik 提到了 interesting blog post going 在描述当时所有可用选项时加倍努力。

必须将修改内核选项视为不得已的选择,除非您知道自己在做什么,否则通常应避免...如果是这种情况,您就不会在这里寻求帮助。因此,我建议不要这样做。

我能提供的最合适的建议是指出描述什么是网络连接的部分:四胞胎(client addressclient portserver addressserver port)。

如果您可以使可用端口池更大,您将能够接受更多的并发连接:

  • 客户端地址和客户端端口不能相乘(无法控制)
  • 服务器端口:您只能通过调整内核参数进行更改:如果您知道需要为系统上的其他进程保留多少可用端口,则不如更改 TCP 存储桶或重用重要
  • 服务器地址:将地址添加到您的主机并平衡它们的流量:
    • 在 L4 系统的后面已经根据您的负载调整大小或直接
    • 将您的域名解析为多个 IP 地址(并​​希望通过 DNS 等跨地址共享负载)

【讨论】:

    猜你喜欢
    • 2015-11-23
    • 2023-03-20
    • 1970-01-01
    • 2012-02-12
    • 2018-05-14
    • 1970-01-01
    • 2012-02-29
    • 2013-04-13
    • 1970-01-01
    相关资源
    最近更新 更多