![在 Windows Server 2008 上降低 TCP time_wait 值的缺点](https://linux22.com/image/1367429/%E5%9C%A8%20Windows%20Server%202008%20%E4%B8%8A%E9%99%8D%E4%BD%8E%20TCP%20time_wait%20%E5%80%BC%E7%9A%84%E7%BC%BA%E7%82%B9.png)
我正在构建一个广告服务器。在测试中,由于使用内存数据库 redis,我看到很多 TIME_WAIT 状态。
论坛建议降低注册表中的时间等待值。
有什么缺点吗?
答案1
TIME_WAIT 状态的目的是促进可靠的连接断开。可靠的连接断开反过来又保护未来的连接免受先前的连接终止段(FIN 段)的影响。因此,通过降低“time_wait 值”(更准确地说是最大段寿命,见下文),您可能会冒着无意中终止活动 TCP 连接的风险。
为什么会这样?为了可靠地断开连接,TCP 必须交换三条类似于三向握手的消息。主动关闭的一端在 TIME_WAIT 中停留的时间是关闭连接的一端的两倍。最大段寿命(MSL)在发送最终的拆除确认(ACK)后。这是因为您的最终 ACK 可能已丢失,在这种情况下,远程端将超时,重新发送 FIN 段并再次等待本地端的最终 ACK。如果您降低 MSL 值,则当网络中仍有来自远程端的 FIN 段时,套接字对很可能很快被重新使用。这样的段随后可能会被误认为是终止新连接的请求。