zoukankan      html  css  js  c++  java
  • 负载均衡服务器中存在大量的TIME_WAIT怎么解决

    首先需要明白什么是TIME_WAIT。TIME_WAIT是在tcp断开连接时进行四次回收的时候,主动断开端在收到被动关闭端的FIN包并发送ACK包给被动关闭后进入的状态。这个状态默认情况下是2倍的MSL(Max segment lifetime,数据段在网络中的最大存活时间),设置TIME_WAIT的主要目的主要有三个:

    1.确保被动关闭端收到了第四次握手的ACK包,否则被动关闭端在LAST_ACK状态中会超时重传FIN包,浪费带宽。

    2.tcp的端口是可以复用的,这次用完这个端口,下次建立连接时,还是可以用这个端口(想想socket,就是个源IP、源port、目的IP、目的port、协议类型这样一个五元组),在复用这个端口后,可能又收到了遗留在网络中的上一次连接的包比如是个FIN包,导致自己又要发送一个RST包。有了TIME_WAIT,那么FIN包肯定已经不会有了(有两倍的MSL啊)。

    3.如果没有TIME_WAIT,但主动关闭端企图发起一个新的tcp连接并且发出第一次握手消息(SYN置1),被动关闭端可能此时还处在LAST_ACK状态,它此时在等待的是一个ACK包,却收到一个SYN包,于是他返回一个RST包,导致新连接失败。有了TIME_WAIT,可以避免这种情况发生。

    所以,TIME_WAIT很重要,并且时长为2MSL,通常为30秒,当有大量的短连接是,就会导致出现大量的TIME_WAIT。

    未完待续~~

  • 相关阅读:
    用 C# 获取 IE 临时文件(转)
    vs2008打包程序需要.net3.5支持问题的解决方案
    关于使用ssh账号上外网
    元数据管理技术及发展应用现状
    一个拨号上网的批处理文件
    windows下启动和关闭oracle数据库的bat脚本
    Solaris下配置网络
    开启windows 2000 server上的远程桌面
    FileZilla客户端使用TIPs
    学习使用gvim
  • 原文地址:https://www.cnblogs.com/JMLiu/p/8886751.html
Copyright © 2011-2022 走看看