• Windows time_wait过多解决办法


    1、查看可用端口数

    以下是我在win7下查看的结果

    1. C:Users hinkpad>netsh int ipv4 show dynamicportrange tcp
    2. 协议 tcp 动态端口范围
    3. ---------------------------------
    4. 启动端口 : 1025
    5. 端口数 : 13976

    win2008下经查是 49152 through 65535 ,可用端口数16384个。

    2、netsh命令修改可用端口数

    1. netsh int ipv4 set dynamicport tcp start=2000 num=63000
    2. netsh int ipv4 set dynamicport udp start=2000 num=63000
    3. netsh int ipv6 set dynamicport tcp start=2000 num=63000
    4. netsh int ipv6 set dynamicport udp start=2000 num=63000

    3、time_wait超时时间调整

    regedit打开注册表,添加

    1. HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters
    2. MaxUserPort”=dword:0000fffe
    3. TcpTimeWaitDelay”=dword:0000005 (缩短为5秒)

    1、修改可用端口范围

    打开注册表--定位到 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters --编辑新建DWORD Value ,新增MaxUserPort

    Value data: Enter a decimal value between 5000 and 65534 here

    需要特别注意,修改完成后,需要重启主机生效。

    2、修改time_wait值

    1. HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters
    2. On the Edit menu, click New, DWORD Value
    3. Value nameTcpTimedWaitDelay
    4. Value data :<Enter a decimal value between 30 and 300 here>

    默认值是240秒(可用范围是30-300),这里修改为30秒后,重启系统使修改生效。

    windows下的解决方案

    1.查看一下占用情况.在cmd输入命令

    netstat -ano | findstr "3306"

    发现 Mysql 的 3306 端口存在大量 TIME_WAIT 状态连接,考虑到近期考勤人数的突然增多,且指纹机打卡为实时上传等原因,初步猜测是在短时间内指纹机大量请求接口操作数据库,而端口并未释放所导致。

    解决方法:

    修改Mysql配置

    [mysqld]
    # 服务器关闭交互式连接前等待活动的秒数
    interactive_timeout=30
    # 服务器关闭非交互连接之前等待活动的秒数
    wait_timeout=30

    注意:需要同时配置interactive_timeout与wait_timeout才可生效!

    修改Windows服务器TCP连接配置

    由于Windows下默认Socket连接为5000个,且预设TIME_WAIT时间为4分钟。我们同时需要修改服务器配置。

    打开注册表 regedit
    找到路径 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters
    在该路径下修改或新建注册表
    类型: DWORD值 名称:MaxUserPort 值(十进制):65543
    类型: DWORD值 名称:TcpTimedWaitDelay 值(十进制):30

    默认的动态端口范围:
        在Windows vista和windows server 2008以前的系统中动态的客户端端口范围是1025到5000;在Windows vista和windows server 2008中,为了遵守IANA的推荐,把范围扩展成49152到65535。在Windows vista和windows server 2008的环境中,可以用如下命令查看这些配置:
    netsh int ipv4 show dynamicport tcp
    netsh int ipv4 show dynamicport udp
    netsh int ipv6 show dynamicport tcp
    netsh int ipv6 show dynamicport udp
    使用如下命令可以重新配置:
    netsh int set dynamic start=number num=range
    简单的例子如下:
    netsh int ipv4 set dynamicport tcp start=10000 num=1000
    netsh int ipv4 set dynamicport udp start=10000 num=1000
    netsh int ipv6 set dynamicport tcp start=10000 num=1000
    netsh int ipv4 set dynamicport udp start=10000 num=1000
    如上所示,可以为每种传输层协议及每个版本的IP协议进行单独的设置,start的最小值是1025,num指的是范围,最小值是255。
    请点击这里查看详细信息。

    通过注册表配置动态分配端口的最大值:
    在HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters里加上如下的键值:
    Value Name: MaxUserPort
    Value Type: DWORD
    Value data: 65534
    Valid Range: 5000-65534 (decimal)
    Default: 0x1388 (5000 decimal)
    Description: This parameter controls the maximum port number that is used when a program requests any available user port from the system. Typically, ephemeral (short-lived) ports are allocated between the values of 1024 and 5000 inclusive. After the release of security bulletin MS08-037, the behavior of Windows Server 2003 was changed to more closely match that of Windows Server 2008 and Windows Vista
    请点击这里查看详细信息。

    端口重用
    此外,每个动态分配的端口号在连接关闭后,需要等待一段时间才能重新使用,可以在HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters中加上如下的键值来配置:
    TcpTimedWaitDelay
    项:TcpipParameters
    数值类型:REG_DWORD - 时间(以秒为单位)
    有效范围:30-300(十进制)
    默认值:0x78(十进制 120)
    描述:此参数确定连接在关闭时保持 TIME_WAIT 状态的时长。只要连接处于 TIME_WAIT 状态,便不能重新使用套接字对。此状态又称为“2MSL”状态。根据 RFC793 规范,此值应是网络上最大段生存期的两倍。有关更多信息,请参见 RFC793。注意:在 Microsoft Windows 2000 中,它的默认值为 240 秒。而在 Windows XP 和 Microsoft Windows Server 2003 中,IPv4 堆栈的默认值已更改为 120 秒,以便提高性能。IPv6 堆栈的默认值为 240 秒。
    请点击这里查看详细信息。

  • 相关阅读:
    触发器
    数据库function和procedure
    java连接数据库
    单例模式
    python入门相关笔记
    ubuntu 系统备份到移动硬盘(tar) 还原到另一台电脑
    大白菜pe 通用pe 安装心得
    18 java 代理模式 (转)
    5 HBase 常用Shell命令
    1、shell 简介
  • 原文地址:https://www.cnblogs.com/asdyzh/p/15190323.html
Copyright © 2020-2023  润新知