首页 > 其他 > 详细

TIME_WAIT 你好!

时间:2019-03-26 15:08:02      阅读:187      评论:0      收藏:0      [点我收藏+]
[root@vm-10-124-66-212 ~]# netstat  -an|awk -F ‘ ‘ ‘{print $NF}‘|sort |uniq -c |sort -rn|more
   5552 TIME_WAIT
    631 ESTABLISHED
     22 SYN_RECV
     10 LISTEN

dmesg Log

TCP: time wait bucket table overflow

先从机器的现状来说起,我机器的time_wait数量较多,以上的数据是非高峰期的机器现状,下面需要进一步了解一下time_wait,可以先从下面三个方面入手去了解。

  • TIME_WAIT 是什么?如何产生的呢?

  • TIME_WAIT存在起到什么作用?

  • TIME_WAIT过多我们应该怎么办?

1.TIME_WAIT是什么?如何产生?

TIME_WAIT 是在TCP协议中的一种状态,他是产生在四次断连时主动发起申请的一方,为什么会出现这种状态呢?(如图)主动方在最后发送ack包时被动方直接进入close状态,因为B服务器认为A已经收到了我的ACK包,通话结束了,但是A此时并不知道B是否收到了我的ACK包,如果B没收到的话B还会给我重复发送FIN开启TCP重传,所以进入了等待状态TIME_WAIT,在等待2MSL后将进入CLOSED状态。

为什么是2MSL呢?

linux里一个MSL为30s,去向ACK消息最大存活时间(MSL) + 来向FIN消息的最大存活时间(MSL) = 2MSL

技术分享图片

 2.TIME_WAIT存在起到什么作用?

 TIME_WAIT进入等待状态,如果不等,释放的端口可能会重连刚断开的服务器端口,这样依然存活在网络里的老的TCP报文可能与新TCP连接报文冲突,造成数据冲突,为避免此种情况,需要耐心等待网络老的TCP连接的活跃报文全部死翘翘,2MSL时间可以满足这个需求,如果强制忽略TIME_WAIT,还是有很高的机率,造成数据粗乱,或者短暂性的连接失败。 

 3.TIME_WAIT过多我们应该怎么办?

 

 

 

 

 

 

 

  

TIME_WAIT 你好!

原文:https://www.cnblogs.com/liuquan/p/10600053.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!