關於close_wait狀態的理解


以web服務器產生大量的close_wait狀態為例

1.close_wait狀態介紹

客戶端主動關閉連接,服務器接收到客戶端的FIN,但是還沒有發送自己的FIN,此時的狀態為close_wait狀態,大量的close_wait狀態拖累服務器性能

2.close_wait產生的原因

某種情況下客戶端關閉了連接,但是我方忙於讀寫,沒有關閉連接

3.解決方法

思想:檢查出客戶端已經關閉的連接,關閉他

之所以會出現這種問題,肯定是服務器端的連接釋放的代碼存在問題

1.當服務器讀寫失敗時,可以選擇關閉連接

2.定期向連接發送詢問數據,檢查收到的回復數據包(Heart-Beat線程發送指定格式的心跳數據包)

3.修改keep-live參數(超時時間,tcp檢查間隔時間:keeplive探測包發送的間隔,tcp檢查次數:如果對方不予應答,探測包發送的次數)


ps:服務器出現大量的close_wait狀態,這個鍋肯定是服務器端的coder背!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM