TIME_WAIT过多是因为什么
(首先需要注意的是,客户机、服务器均可以发起对 TCP 连接的关闭,以下以服务器发起关闭为例。)
TIME_WAIT 是什么:关闭 TCP 连接过程中,第 4 次挥手时,服务器发送了 ACK 报文段之后,服务器会进入 TIME_WAIT 状态,这是为了确保客户机能够正确地关闭、释放资源。TIME_WAIT状态将持续2个MSL(Max Segment Lifetime),TIME_WAIT状态下的socket不能被回收使用。
TIME_WAIT 过多的原因:对于一个处理大量短连接的服务器,如果是由服务器主动关闭客户端的连接,将导致服务器存在大量的处于TIME_WAIT状态的socket,严重影响服务器的处理能力,甚至耗尽可用的socket。
解决:修改参数TcpTimedWaitDelay,缩短 TIME_WAIT 的等待时间。
- 《HTTP 权威指南》 - P90;
- 《1 计算机网络之探赜索隐》 - 哈工大 - 网易慕课 - 15.314 TCP连接管理 - 09分12秒;
- 《计算机网络 - 自顶向下》 - 3.5.6 TCP连接管理 - P169——P174。);
- 发现大量的TIME_WAIT解决办法;
- 理解TIME_WAIT,彻底弄清解决TCP: time wait bucket table overflow。