开发者社区> 问答> 正文

ECS Windows Time_Wait过多导致访问外网失败

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

展开
收起
开发者说 2019-08-01 14:50:24 574 0
1 条回答
写回答
取消 提交回答
  • 问题原因

    一般而言, 该问题原因是Windows动态端口耗尽。可以在CMD中输入如下命令简单测试:

    Netstat -ano | findstr 445
    
    

    该命令会显示445端口在监听在所有网卡上,

    注:TCP 445端口是Windows文件共享服务使用端口,默认是监听状态

    telnet 127.0.0.1 445
    
    

    image.png

    如果无法访问,说明动态端口耗尽。

    此时,如果使用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
    
    

    image.png

    关于动态端口说明,可以参考微软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/help/929851/the-default-dynamic-port-range-for-tcp-ip-has-changed-in-windows-vista

    <2> 降低Time Wait时间,最低为30秒

    打开注册表,定位到HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

    新增键值 TcpTimedWaitDelay,类型REG_DWORD , 设置为十进制30

    参考资料:

    https://technet.microsoft.com/en-us/library/cc938217.aspx?spm=a2c4g.11186623.2.15.870a4c07KazC4m

    注:修改后重启生效

    2019-08-01 14:53:19
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
如何运维千台以上游戏云服务器 立即下载
网站/服务器取证 实践与挑战 立即下载
ECS块储存产品全面解析 立即下载