学习帖,有关time_wait的一些总结

服务器端出现大量的TIME_WAIT连接的原因

TIME_WAIT是主动关闭连接的一方保持的状态,在发起主动关闭连接后,发送完最后一次ACK包之后,就会进入到这个状态,然后在保持这个状态2MSL(max segment lifetime) 时间之后,彻底关闭回收资源。

为什么要保持这一段时间的资源呢?原因有下面两个方面

解决思路:快速回收和重新用哪些TIME_WAIT的资源

应用层面: 避免频繁关闭连接,如业务优化或者使用长连接等.

系统层面: 1.缩短msl时间 2.增加可用端口的数量

msl时间修改: 默认为2分钟

查看:sysctl -a | grep time | grep wait

  1. vi /etc/sysctl.conf

  2. net.ipv4.tcp_fin_timeout = 30

  3. 执行 /sbin/sysctl -p让参数生效

进行一些参数的配置

net.ipv4.tcp_tw_reuse和net.ipv4.tcp_tw_recycle的开启都是为了回收处于TIME_WAIT状态的资源。   net.ipv4.tcp_fin_timeout这个时间可以减少在异常情况下服务器从FIN-WAIT-2转到TIME_WAIT的时间。   net.ipv4.tcp_keepalive_*一系列参数,是用来设置服务器检测连接存活的相关配置。 

我看的文章链接

https://zhuanlan.zhihu.com/p/60382685

https://zhuanlan.zhihu.com/p/45102654