负载均衡服务器中存在大量的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。

未完待续~~

转载于:https://www.cnblogs.com/JMLiu/p/8886751.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值