Linux下TCP連線斷開後不釋放的解決辦法

2021-10-11 21:28:09 字數 677 閱讀 5583

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探測包來確認連線情況。

解決:通過修改keepalive配置為合適的值(如改為200秒)可以快速釋放埠連線。

臨時修改,通過echo設定tcp_keepalive_time。

echo

"200"

> /proc/sys/net/ipv4/tcp_keepalive_time

net.ipv4.tcp_keepalive_time = 200
然後執行命令使修改後的配置生效

Linux下TCP連線斷開後不釋放的解決辦法

問題 在開發測試時發現斷開與伺服器端口後再次連線時拒絕連線。分析 伺服器上檢視埠占用情況,假設埠為8888。netstat anp grep 8888發現埠8888埠顯示被占用 ip為本機ip確定是上次連線 且狀態為established,然而實際上連線已經斷開,但是服務端沒有斷開連線,檢視tcp的...

Tcp 斷開連線

tcp協議規定,對於已經建立的連線,網路雙方要進行四次握手才能成功斷開連線,如果缺少了其中某個步驟,將會使連線處於假死狀態,連線本身占用的資源不會被釋放。網路伺服器程式要同時管理大量連線,所以很有必要保證無用連線完全斷開,否則大量僵死的連線會浪費許多伺服器資源。在眾多tcp狀態中,最值得注意的狀態有...

TCP連線和斷開連線

4.4 tcp資料報結構 帶陰影的幾個字段需要重點說明一下 1 序號 seq sequence number 序號佔32位,用來標識從計算機a傳送到計算機b的資料報的序號,計算機傳送資料時對此進行標記。2 確認號 ack acknowledge number 確認號佔32位,客戶端和伺服器端都可以傳...