net.ipv4.tcp_fin_timeout真实意义

发布时间 2023-05-24 01:34:56作者: 今夕何兮

官网解释:https://www.kernel.org/doc/html/latest/networking/ip-sysctl.html

百度的坑:

最初百度查到关于这个参数的结果,基本上都是这种解释:该参数控制tcp四次挥手过程中,主动请求断开连接的一方处于TIME_WAIT状态的时间,后面实践中发现,并非如此。

以下为四次挥手状态图:

image

经过实际测试,并查阅官方资料,发现该参数真实作用为:控制主动请求关闭tcp连接的一方,处于FIN-WAIT2状态的时间

手动配置Linux系统 net.ipv4.tcp_fin_timeout = 180,然后用telnet测试:
image

修改net.ipv4.tcp_fin_timeout = 60,测试结果:
image

看起来两者是相等的,但是,当修改值为其他某些值,结果并不完全相等,具体如何影响,任然不确定。

修改net.ipv4.tcp_fin_timeout = 10,每次会在23秒左右结束fin2状态,测试结果:
image

实际应用:

如果观察到服务器有大量处于FIN_WAIT2状态的连接,可以将net.ipv4.tcp_fin_timeout参数值调小,以便加快系统关闭处于FIN_WAIT2状态的TCP连接。