net.ipv4.tcp_fin_timeout真实意义
Posted 今夕何夕、
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了net.ipv4.tcp_fin_timeout真实意义相关的知识,希望对你有一定的参考价值。
官网解释:https://www.kernel.org/doc/html/latest/networking/ip-sysctl.html
百度的坑:
最初百度查到关于这个参数的结果,基本上都是这种解释:该参数控制tcp四次挥手过程中,主动请求断开连接的一方处于TIME_WAIT状态的时间,后面实践中发现,并非如此。
以下为四次挥手状态图:
经过实际测试,并查阅官方资料,发现该参数真实作用为:控制主动请求关闭tcp连接的一方,处于FIN-WAIT2状态的时间
手动配置Linux系统 net.ipv4.tcp_fin_timeout = 180,然后用telnet测试:
修改net.ipv4.tcp_fin_timeout = 60,测试结果:
看起来两者是相等的,但是,当修改值为其他某些值,结果并不完全相等,具体如何影响,任然不确定。
修改net.ipv4.tcp_fin_timeout = 10,每次会在23秒左右结束fin2状态,测试结果:
实际应用:
如果观察到服务器有大量处于FIN_WAIT2状态的连接,可以将net.ipv4.tcp_fin_timeout参数值调小,以便加快系统关闭处于FIN_WAIT2状态的TCP连接。
linux 内核优化参数
#----------------Kernel---Chris----2016.5.4-youhua-----------------#
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000 65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
net.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_tcp_timeout_established = 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
#----------------END------------------#
本文出自 “土豆” 博客,谢绝转载!
以上是关于net.ipv4.tcp_fin_timeout真实意义的主要内容,如果未能解决你的问题,请参考以下文章