206
云计算
负载均衡
产品简介
产品价格
快速入门
用户指南
实践操作
常见问题
购买指南
云服务器
产品简介
计费规则
购买指导
控制台使用指南
常见问题
云数据库
产品简介
计费规则
购买指导
快速入门
连接实例
控制台使用指南
对象存储
产品简介
控制台使用指南
程序员百科
Python
Windows实例的Time_Wait连接不释放导致访问外网失败,如何处理?

产品推荐:

1、安全稳定的云服务器租用,2核/2G/5M仅37元,点击抢购>>>

2、高防物理服务器20核/16G/50M/500G防御仅350元,点击抢购>>>

3、百度智能建站(五合一网站)仅880元/年,点击抢购>>> 模板建站(PC+手机站)仅480元/年,点击抢购>>>

4、阿里云服务器2核2G3M仅99元/年、2核4G5M仅199元/年,新老同享,点击抢购>>> 

5、腾讯云服务器2核2G4M仅99元/年、新老同享,点击抢购>>>   


Windows实例的Time_Wait连接不释放导致访问外网失败,如何处理?

本文介绍Windows实例的Time_Wait连接不释放,导致访问外网失败问题的问题描述、问题原因和解决方案。

问题描述

当在Windows实例上可以ping通外网,但是无法使用浏览器访问外网、访问外网加载时间过长或者Windows实例上的应用联网异常时,在Windows实例的CMD命令提示符中,执行netstat -an |find "TIME_WAIT" /c 命令,发现存在大量TCP连接处于TIME_WAIT状态,示例如下:查看time_wait连接

问题原因

Windows操作系统从Windows Server 2008版本以后,默认动态端口的数量为16384个(从49152起始,到65536结束)。由于TCP默认的Time Wait Delay时间为4分钟,如系统内有大量的活动连接,在结束后会在较长时间处于Time_Wait状态并占用大量端口,从而导致新的连接或应用因无端口使用而出现异常。

解决方案

说明

以下操作步骤以Windows Server 2012 R2为例,实际操作以您实际的Windows实例操作系统为准。

  1. 使用VNC连接Windows实例。

    具体操作,请参见通过密码认证登录Windows实例。

  2. 打开CMD命令提示符。

    1. 单击桌面左下角开始图标图标,然后单击搜索图标图标。

    2. 在搜索框输入cmd单击命令提示符

    3. 单击命令提示符

      进入命令提示符。进入命令提示符

  3. 执行如下命令,查看当前动态端口配置。

    netsh int ipv4 show dynamicport tcp

    回显示例如下,表示动态端口的数量为16384个(从49152起始,到65536结束)。

    20230209142221
  4. 执行如下命令,增大动态端口数量。

    netsh int ipv4 set dynamicport tcp start=1025 num=60000
    说明

    startnum参数表示起始端口和端口数量,您需要根据实际情况调整参数值。

    回显示例如下,表示动态端口的数量增大到60000个(从1025起始,到61025结束)。

    20230209142347
  5. 重新访问外网或连接应用。

    • 访问成功,该问题解决。

    • 访问失败,执行下一步,修改注册表来降低Time Wait时间。

  6. 如果增大动态端口数量仍然不能完全解决该问题,您可以通过修改注册表来降低Time Wait时间,最低支持设置为30秒,具体操作如下:

    重要

    为了避免注册表误操作带来的操作系统问题或者造成的数据丢失,请您操作注册表前,务必对系统盘和数据盘创建快照,并且操作完毕后需要重启Windows实例后才能使修改生效,具体操作如下:

    • 创建快照,请参见创建一个云盘快照。

    • 重启Windows实例,请参见重启实例。

    1. 打开注册表编辑器。

      1. 单击桌面左下角开始图标图标,然后单击搜索图标图标。

      2. 在搜索框输入regedit打开注册表编辑器

      3. 单击regedit

        进入注册表编辑器。2012注册表编辑器

    2. 在注册表编辑器的HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services>Tcpip>Parameters路径下,将注册表项TcpTimedWaitDelay的数值数据设置为十进制数值30

      如果TcpTimedWaitDelay项不存在,请新建对应注册表项,然后再修改数值数据。以TcpTimedWaitDelay不存在为例,操作如下:

      1. 在注册表编辑器的HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services>Tcpip>Parameters路径下,右键单击注册表项空白区域,然后选择新建(N) > DWORD (32 位)值新建注册表项

      2. 输入TcpTimedWaitDelay,按Enter键。

      3. 右键单击注册表项TcpTimedWaitDelay,然后单击修改单击修改注册表项

      4. 在对话框中,勾选十进制,然后将数值数据设置为30需改数值数据为30

      5. 单击确定


这条帮助是否解决了您的问题? 已解决 未解决

提交成功!非常感谢您的反馈,我们会继续努力做到更好! 很抱歉未能解决您的疑问。我们已收到您的反馈意见,同时会及时作出反馈处理!