解決方法:1、利用修改keepalive配置為合適的值可以快速釋放端口連接,利用echo設置“設置tcp_keepalive_time”即可,語法為“echo “指定值” > ?/proc/sys/net/ipv4/tcp_keepalive_time”;2、編輯“/etc/sysctl.conf”文件,語法為“net.ipv4.tcp_keepalive_time=指定值”。
本教程操作環境:linux7.3系統、Dell G3電腦。
linux中tcp連接不釋放怎么辦
問題描述
在開發測試時發現斷開與服務器端口后再次連接時拒絕連接。
分析:服務器上查看端口占用情況,假設端口為8080。
netstat?-anp?|grep?8080
發現端口8080端口顯示被占用(ip為本機ip確定是上次連接)且狀態為ESTABLISHED,然而實際上連接已經斷開,但是服務端沒有斷開連接,查看TCP的keepalive配置。
sysctl?-a?|grep?keepalive
發現為默認的配置
net.ipv4.tcp_keepalive_time?=?7200 net.ipv4.tcp_keepalive_probes?=?9 net.ipv4.tcp_keepalive_intvl?=?75
默認情況下在連接空閑7200秒即2個小時后才會發送keepalive探測包來確認連接情況。
解決方案
解決:
1、通過修改keepalive配置為合適的值(如改為200秒)可以快速釋放端口連接。
臨時修改,通過echo設置tcp_keepalive_time。
echo?"200"?>??/proc/sys/net/ipv4/tcp_keepalive_time
2、永久生效,編輯/etc/sysctl.conf,新增或修改為
net.ipv4.tcp_keepalive_time?=?200
然后執行命令使修改后的配置生效
推薦學習:Linux視頻教程
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦