netstat -an
CLOSE_WAIT
状态表示正在等待关闭的连接的另一端,也就是对方主动关闭了连接,但是我方还没有完全关闭连接。这通常发生在 TCP 连接的断开过程中,当你的主机收到对方主动发起的 FIN(结束)包时,它的 TCP 状态会变成 CLOSE_WAIT
。
打开注册表 运行->regedit
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters目录下
增加一个MaxUserPort(默认值是5000,端口范围是1025至5000)MaxUserPort设置为65534(需重启服务器)
执行dos命令:
与上面操作结果一样,区别在于上面方法需要重启服务器,下面的不需要重启服务器。
netsh int ipv4 set dynamicport tcp start=1025 num=64510(不需要重启服务器)
增加一个TcpTimedWaitDelay(表示一个关闭后的端口等待多久之后可以重新使用,默认值为120)更改为30
TCP的KeepLive功能,可以让操作系统替我们自动清理掉CLOSE_WAIT的连接。
但是KeepLive在Windows操作系统下默认是7200秒,也就是2个小时才清理一次。往往满足不了要求。可以调小该数值。
Windows下的调整方法为
HKEY_LOCAL_MACHINE/CurrentControlSet/Services/Tcpip/Parameters下的以下三个参数:
KeepAliveInterval,设置其值为1000
KeepAliveTime,设置其值为300000(单位为毫秒,300000代表5分钟)
TcpMaxDataRetransmissions,设置其值为5