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。

    未完待续~~

  • 相关阅读:
    NumPy:数组计算
    Matplotlib模块:绘图和可视化
    量化投资与Python
    vue-cli脚手架(框架)
    vue 之webpack打包工具的使用
    vue之node.js的简单介绍
    es6简单介绍
    ECMAScript 6 入门
    爬虫框架之Scrapy
    angular5使用httpclient时解决跨域问题
  • 原文地址:https://www.cnblogs.com/JMLiu/p/8886751.html
Copyright © 2011-2022 走看看