在 Windows Server 2008 上降低 TCP time_wait 值的缺点

在 Windows Server 2008 上降低 TCP time_wait 值的缺点

我正在构建一个广告服务器。在测试中,由于使用内存数据库 redis,我看到很多 TIME_WAIT 状态。

论坛建议降低注册表中的时间等待值。

有什么缺点吗?

答案1

TIME_WAIT 状态的目的是促进可靠的连接断开。可靠的连接断开反过来又保护未来的连接免受先前的连接终止段(FIN 段)的影响。因此,通过降低“time_wait 值”(更准确地说是最大段寿命,见下文),您可能会冒着无意中终止活动 TCP 连接的风险。

为什么会这样?为了可靠地断开连接,TCP 必须交换三条类似于三向握手的消息。主动关闭的一端在 TIME_WAIT 中停留的时间是关闭连接的一端的两倍。最大段寿命(MSL)在发送最终的拆除确认(ACK)后。这是因为您的最终 ACK 可能已丢失,在这种情况下,远程端将超时,重新发送 FIN 段并再次等待本地端的最终 ACK。如果您降低 MSL 值,则当网络中仍有来自远程端的 FIN 段时,套接字对很可能很快被重新使用。这样的段随后可能会被误认为是终止新连接的请求。

相关内容