tcp連線大量CLOSE WAIT

2021-06-19 22:29:18 字數 705 閱讀 7675

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_wait狀態。

要解決這個問題的可以修改系統的引數,系統預設超時時間的是7200秒,也就是2小時。

預設如下:

tcp_keepalive_time = 7200 seconds (2 hours)

tcp_keepalive_probes = 9

tcp_keepalive_intvl = 75 seconds

意思是如果某個tcp連線在idle 2個小時後,核心才發起probe.如果probe 9次(每次75秒)不成功,核心才徹底放棄,認為該連線已失效

修改後

sysctl -w net.ipv4.tcp_keepalive_time=30

sysctl -w net.ipv4.tcp_keepalive_probes=2

sysctl -w net.ipv4.tcp_keepalive_intvl=2

經過這個修改後,伺服器會在短時間裡**沒有關閉的tcp連線。

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

close wait產生原因 close wait是被動關閉連線是形成的,根據tcp狀態機,伺服器端收到客戶端傳送的fin,tcp協議棧會自動傳送ack,鏈結進入close wait狀態。但如果伺服器端不執行socket的close 操作,狀態就不能由close wait遷移到last ack,則系...

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...