小编典典

设置TIME_WAIT TCP

python

我们正在尝试调整一个应用程序,该应用程序通过TCP接受消息,并且还将TCP用于其一些内部消息传递。在进行负载测试时,我们注意到随着向系统发出更多同时请求,响应时间显着降低(然后完全停止)。在这段时间内,我们看到许多TCP连接处于TIME_WAIT状态,有人建议将TIME_WAIT环境变量从默认的60秒降低到30秒。

据我了解,该TIME_WAIT设置实质上设置了关闭连接后再次向系统提供TCP资源的时间。

我不是“网络专家”,对这些事情了解甚少。我需要该链接文章中的很多内容,但要“简化”一下。

我想我理解为什么TIME_WAIT不能将值设置为0,但是可以安全地将其设置为5吗?那10点呢?是什么确定该值的“安全”设置?
为什么此值的默认值为60?我猜想比我聪明的人有充分的理由将其选为合理的默认值。
关于覆盖此值的潜在风险和收益,我还应该了解什么?


阅读 207

收藏
2020-12-20

共1个答案

小编典典

元组指定TCP连接(源IP,源端口,目标IP,目标端口)。

会话关闭后仍处于TIME_WAIT状态的原因是,在网络中仍有可能向您(或从您那里征求某种响应)的实时数据包流出。如果您要重新创建相同的元组并且其中一个数据包出现,则将其视为连接的有效数据包(并可能由于排序而导致错误)。

因此,通常将TIME_WAIT时间设置为使数据包最大寿命加倍。此值是您的数据包在网络丢弃之前可以达到的最长期限。

这样可以保证在允许您使用相同的元组创建连接之前,属于该元组的先前版本的所有数据包都将被丢弃。

通常,这决定了您应该使用的最小值。最大数据包寿命由网络属性决定,例如,由于数据包还有很长的路要走,因此卫星的寿命要比LAN的寿命长。

2020-12-20