问题总结
我们有一个设置,其中很多(每秒 800 到 2400 个传入连接到 linux 机器,我们在客户端和服务器之间有一个 NAT 设备。所以系统中剩下这么多 TIME_WAIT 套接字。为了克服这个问题,我们已将 tcp_tw_recycle 设置为 1,但这导致了 comming 连接的丢失。在浏览网络后,我们确实找到了为什么会发生 tcp_tw_recycle 和 NAT 设备丢失帧的参考。
尝试解决
然后我们尝试将 tcp_tw_reuse 设置为 1,它工作正常,没有任何问题,使用相同的设置和配置。
但是文档说,当通过 TCP 状态感知节点(例如防火墙、NAT 设备或负载平衡器)的连接可能会看到丢帧时,不应使用 tcp_tw_recycle 和 tcp_tw_reuse。连接越多,您就越有可能看到此问题。
查询
1) tcp_tw_reuse 可以用在这种场景吗?2)如果不是,linux代码的哪一部分阻止了tcp_tw_reuse被用于这种情况?3)一般tcp_tw_recycle和tcp_tw_reuse有什么区别?