开发者社区 问答 正文

ECS Windows Time_Wait过多导致访问外网失败应该如何解决


注:注册表修改需要对Windows操作系统有一定了解,为了避免注册表误操作带来的操作系统问题或者可能的数据丢失,请您采用如下方式操作注册表前,务必对系统盘和数据盘创建快照以避免可能的数据丢失。

问题现象




ECS Windows可以ping通外网,但是无法访问外部的网站或者应用。

问题原因



一般而言, 该问题原因是Windows动态端口耗尽。可以在CMD中输入如下命令简单测试:
Netstat -ano | findstr 445
该命令会显示445端口在监听在所有网卡上,

注:TCP 445端口是Windows文件共享服务使用端口,默认是监听状态
telnet 127.0.0.1 445
如果无法访问,说明动态端口耗尽。
此时,如果使用netstat -ano命令,可以发现大量连接处于TIME_WAIT状态。

解决方案



默认Windows 2008 以后,动态端口的数量为16384个 (从49152起始,到65536结束),如果服务器对外有大量连接,而根据TCP默认的Time Wait Delay时间为4分钟,这会导致大量连接在断开后处于Time Wait状态,无法快速释放给其它连接使用,这可能导致端口耗尽。
<1> 增大动态端口数量
请以管理员身份打开CMD,运行如下命令:
netsh int ipv4 set dynamicport tcp start=1025 num=60000
注:该步骤无需重启机器, 立即生效
修改后运行命令检查配置
netsh int ipv4 show dynamicport tcp

关于动态端口说明,可以参考微软KB:
The default dynamic port range for TCP/IP has changed in Windows Vista and in Windows Server 2008
https://support.microsoft.com/en-us/kb/929851

<2> 降低Time Wait时间,最低为30秒
打开注册表,定位到HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
新增键值 TcpTimedWaitDelay,类型REG_DWORD , 设置为十进制30
参考资料:
https://technet.microsoft.com/en-us/library/cc938217.aspx
注:修改后重启生效

如果问题还未能解决,请联系 售后技术支持

展开
收起
boxti 2017-10-24 15:37:49 2886 分享 版权
阿里云 AI 助理回答

针对您遇到的ECS Windows实例可以ping通外网但无法访问外部网站或应用的问题,根据您描述的情况和提供的解决方案,这里补充一些操作细节和建议,确保在阿里云ECS上安全高效地进行调整:

增大动态端口数量

  1. 以管理员身份运行命令提示符

    • 右键点击“开始”按钮或按下Win+X组合键,选择“Windows PowerShell(管理员)”或“命令提示符(管理员)”。
  2. 执行增大动态端口范围的命令

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

    这个命令将TCP动态端口的起始值设为1025,总数设为60000,以提供更多可用端口。

  3. 检查配置是否生效

    netsh int ipv4 show dynamicport tcp
    

降低Time Wait时间

修改注册表前,请确保已经按照提醒创建了系统盘和数据盘的快照,以防不测。

  1. 打开注册表编辑器

    • 同样以管理员身份运行命令提示符,输入regedit并回车打开注册表编辑器。
  2. 定位到指定键值

    • 导航至 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  3. 新建TcpTimedWaitDelay键值

    • 在右侧空白区域右击,选择“新建” > “DWORD (32位)值”,命名为TcpTimedWaitDelay
  4. 设置键值

    • 双击新创建的TcpTimedWaitDelay,在弹出窗口中,基数选择“十进制”,数值数据输入30,然后点击“确定”。
  5. 重启计算机

    • 修改注册表后,需要重启ECS实例以使更改生效。可以通过阿里云控制台的实例管理界面来重启实例。

注意事项

  • 备份与谨慎操作:在进行任何注册表修改之前,务必确保有完整的系统状态备份,避免因误操作导致系统不稳定。
  • 监控与验证:实施上述变更后,持续监控系统的网络连接情况及性能指标,确认问题是否得到解决,并注意观察是否有其他副作用出现。
  • 技术支持:如果问题依旧存在,或者在操作过程中遇到困难,及时联系阿里云售后技术支持获取专业帮助。

通过这些步骤,您可以尝试解决ECS Windows实例无法访问外部网站或应用的问题。希望这些建议对您有所帮助!您也可以通过ECS一键诊断全面排查并修复ECS问题。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答