服務端大量CLOSE WAIT問題

2021-09-02 21:11:49 字數 631 閱讀 5885

服務端大量close_wait問題.md

### 現象描述:

服務端使用了quartz框架之後,剛開始啟動jetty容器的時候,請求正常,大概幾個請求完了之後,部分mac機子出現客戶端一直在請求,但是返回給客戶端的資訊是異常,服務端壓根沒有收到請求,或者收到請求**執行的非常慢

使用命令 lsof -i:8080檢視程序數,發現大量程序存在,並且狀態是close_wait;正常情況下是在執行客戶端請求的時候程序數增加,但隨之會關閉。

close_wait:客戶端關閉了socket連線,傳送了fin報文,服務端也傳送了ack報 文,此時客戶端處於fin_wait_2狀態,服務端處於close_wait狀態,問題的原因是服務端沒有傳送第二個fin報文導致的。

可能的原因tcp請求:

- mongo

- redis

- mq

- mysql

因為quartz引入了新的mysql連線,所以估計是連線超上限的問題

#### 解決方案

- msyql 資料庫的processlist表,設定全域性的超時時間100ms,得到驗證,問題解決

- 設定連線池,以及空閒連線釋放時間

### 參考**

[服務端大量close_wait問題的解決](

大量CLOSE WAIT連線導致服務假死

參考 三次握手 四次揮手 引用重點語句 close wait 從上面的圖可以看出來,如果一直保持在close wait 狀態,那麼只有一種情況,就是在對方關閉連線之後,伺服器程式自己沒有進一步發出ack 訊號。換句話說,就是在對方連線關閉之後,程式裡沒有檢測到,或者程式壓根就忘記了這個時候需要關閉連...

HTTP服務端JSON服務端

最後更新日期 2014 5 18 author kagula 內容簡介 cppcms是個開源web開發框架,通過它可以很容易實現http服務和json服務,這裡介紹cppcms開發環境的搭建。寫乙個cppcms測試程式,它建立http服務,向瀏覽器返回hello,world頁面。cppcms依賴的一...

服務端系統

1.高可用 容錯和降級。容錯級別上,忽略次要 error 服務降級 程式中部分error是可以忽略處理的,或者打個日誌標記下,而不用結束整個執行流程。服務降級是指,當依賴的非核心模組出問題時,可以選擇不請求或者熔斷式請求 過載保護 資料可以不吐給客戶端,這就要求對資料或者服務進行級別劃分,優先保證使...