當前位置:股票大全官網 - 財經資訊 - HttpClient使用中響應異常失敗的解決方案

HttpClient使用中響應異常失敗的解決方案

zuul1.x在使用過程中,偶爾會出現響應失敗的異常消息,對應的異常是httpclient的NoHttpResponseException。

當httpclient本身使用線程池時,偶爾會發生這種異常。

解決方法是減少空閑連接的存活時間,zuul本身就在SimpleHostRoutingFilter.java。

生存時間內的連接通過connectionManagerTimer計時器關閉。默認情況下,延遲30秒開始檢查,每隔5秒執行壹次。

Zuul作為客戶端連接nginx代理的服務,對應的設置如下:

Nginx設置keepalive_timeout=180s,所以當空閑時間達到180s時,服務器已經斷開連接。此時,當httpclient在池中獲取連接時,可能會出現NoHttpResponseException。

Zuul.host.time-to-live應設置為

另外Zuul。host.max-per-route-connections要根據實際情況分配,不能太大。

而且經過測試只是偶爾出現,httpclient內部也使用了各種機制來保證連接斷開後可以繼續重新連接。但是在壹些特殊情況下,socket的寫操作會無壹例外的失敗,Httpclient無法處理這個失敗,導致解析響應失敗。

請參考原文: