以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背!
