我们在现场运行一个包含大量嵌入式设备的服务,它们的 tcp 堆栈有点错误,有时无法正确关闭连接,导致某些连接卡在服务器上的 FIN-WAIT-2 中。
通常,这些连接会根据 超时/proc/sys/net/ipv4/tcp_fin_timeout,但我们的连接在一分钟后仍然可见ss。即使重新启动进程也无法摆脱它们,唯一的方法似乎是重新启动。
/proc/sys/net/ipv4/tcp_fin_timeout
ss
当然,长期解决方案是修复客户端以正确关闭连接,但令我担心的是,连接没有超时,尽管它们应该超时。什么可能导致这种情况?如何摆脱无用的连接?
linux tcp
linux ×1
tcp ×1