/proc/sys/net/ipv4/tcp_keepalive_time」; 2.編輯「/etc/sysctl.conf」文件,語法為「net.ipv4.tcp_keepalive_time=指定值」。"/> /proc/sys/net/ipv4/tcp_keepalive_time」; 2.編輯「/etc/sysctl.conf」文件,語法為「net.ipv4.tcp_keepalive_time=指定值」。">
解決方法: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電腦。
問題描述
#在開發測試時發現斷開與伺服器連接埠後再次連線時拒絕連接。
分析:伺服器上查看連接埠佔用情況,假設連接埠為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影片教學
以上是linux中tcp連線不釋放怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!