程式連線haproxy執行緒一直close_wait問題

hotdog04發表於2015-07-27
     今天一個rd反映連線haproxy叢集報錯,檢視應用伺服器程式大量的埠連線處於colse_wait狀態。
這個haproxy的redis叢集類似配置已經好幾組了,配置都相同問啥別的都好好的這個卻有問題。
     自己嘗試使用redis-cli連線(haproxy做的redis分片叢集),確實能夠正常連線操作,但是連線狀態馬上就會變成
close_wait狀態,重新執行命令這個close_wait狀態會恢復ESTABLISHED,但是細心看埠號已經變化,也就是redis-cli
發生了重新連線。
於是問題清晰了:使用者客戶端工具建立連結後,沒有自動重連來保持連線,導致超時,伺服器主動斷開連線,客戶端再次
連結的時候socket已經損壞不可用了,導致報錯
解決辦法:調整haproxy的超時引數:
timeout connect 5s
timeout queue   5s
timeout client 30s
timeout server 30s
timeout client-fin 30s
timeout server-fin 30s
timeout tunnel  1h

引數解釋:
timeout connect      連線嘗試成功連線到server的超時時間
timeout queue        在佇列等待連線槽釋放的超時時間
timeout server       server端非活動狀態超時時間
timeout client       客戶端非活動狀態超時時間
timeout server-fin   半關閉狀態連線,server端非活動超時時間
timeout client-fin   半關閉狀態連線,client端非活動超時時間
timeout tunnel       客戶端和伺服器端通道非活動超時時間

再次測試close_wait消失了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/20625855/viewspace-1753659/,如需轉載,請註明出處,否則將追究法律責任。

相關文章