Answers:
# record what tcp_max_orphans's current value
original_value=$(cat /proc/sys/net/ipv4/tcp_max_orphans)
#set the tcp_max_orphans to 0 temporarily
echo 0 > /proc/sys/net/ipv4/tcp_max_orphans
# watch /var/log/messages
# it will split out "kernel: TCP: too many of orphaned sockets"
# it won't take long for the connections to be killed
# restore the value of tcp_max_orphans whatever it was before.
echo $original_value > /proc/sys/net/ipv4/tcp_max_orphans
# verify with
netstat -an|grep FIN_WAIT1
您应该可以使用设置超时/proc/sys/net/ipv4/tcp_fin_timeout
。
确实似乎没有任何手动清除套接字的方法。
似乎tcp_orphan_retries设置控制释放无服务器端口之前将进行多少次尝试。此处为0,将其设置为1后,端口消失了。
HTH
/proc/sys/net/ipv4/tcp_fin_timeout
是FIN-WAIT-2状态的超时,而不是FIN-WAIT-1的超时。您应该采用tcpkill路线,否则您可以尝试使用Keepalive时代/proc/sys/net/ipv4/tcp_keepalive_*
来迫使SO杀死。
在root用户ID下运行这些步骤,它对我来说已经清除了:
捕获内核设置以更改变量
$ orig_orphans=$(sysctl -a|grep tcp_max_orph|cut -f3 -d' ')
暂时将最大孤儿数设为0
$ sysctl -w net.ipv4.tcp_max_orphans=0
检查以确保不再使用有问题的端口
$ netstat -np|grep 9716
请稍等一下,如果需要,请重复上述步骤,直到上述命令不返回任何行
将tcp_max_orphans内核参数重置为上述变量中的原始值
$ sysctl -w net.ipv4.tcp_max_orphans=$orig_orphans
在linux kernel> = 4.9上,您可以使用ss
iproute2中的命令-K键
ss -K dst 192.168.1.214 dport = 49029必须在启用了CONFIG_INET_DIAG_DESTROY选项的情况下编译内核。
也许tcpkill会有所帮助吗?此处更多信息:http : //www.cyberciti.biz/howto/question/linux/kill-tcp-connection-using-linux-netstat.php
$whateveritwas
在覆盖之前先做笔记。