TCP連線大量CLOSE WAIT狀態問題排查

2021-09-11 06:26:31 字數 365 閱讀 1271

close_wait產生原因

close_wait是被動關閉連線是形成的,根據tcp狀態機,伺服器端收到客戶端傳送的fin,tcp協議棧會自動傳送ack,鏈結進入close_wait狀態。但如果伺服器端不執行socket的close()操作,狀態就不能由close_wait遷移到last_ack,則系統中會存在很多close_wait狀態的連線,如下圖所示: 

可能的原因如下:

關閉socket不及時:例如i/o執行緒被意外阻塞,或者i/o執行緒執行的使用者自定義task比例過高,導致i/o操作處理不及時,鏈路不能被及時釋放。

tcp連線大量CLOSE WAIT

netstat n awk tcp end last ack 1 syn recv 15 close wait 7729 established 471 fin wait1 3 fin wait2 52 syn sent 1 time wait 725 從結果可以看到有大量的連線處於close wa...

https請求,大量TCP請求time out

對傳送https請求進行效能測試,大量tcp連線處於time wait狀態。修改linux核心引數,發現只是對http起作用,對https未起到作用。https tcp time wait屬於系統環境的問題。在頻寬為1000兆的網路環境中,造成網路傳輸的處理高於伺服器對https的處理能力。從而出現...

大量資料的tcp的recv

最近在調程式的時候,發現傳送端傳送乙個119136個char的記憶體的時候,在接收端不能全部接收,於是,通過除錯發現,必須在接收端多次的recv以後,進行拼接 如下 char lenbuf 4 int ilen 接收資料 int bytes 先接受前面的四位訊息體長度 if bytes recv c...