Spring Boot使用Feign客戶端調用遠程服務時出現:timed-out and no fallback available,failed and no fallback available的問題解決


timed-out and no fallback available:

這個錯誤基本是出現在Hystrix熔斷器,熔斷器的作用是判斷該服務能不能通,如果通了就不管了,調用在指定時間內超時時,就會通過熔斷器進行錯誤返回。

一般設置如下配置的其中一個即可:

1、把時間設長

這里設置5秒

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=5000  

2、把超時發生異常屬性關閉

hystrix.command.default.execution.timeout.enabled=false  

3、禁用feign的hystrix 

feign.hystrix.enabled: false  

failed and no fallback available:

而通過上面設置只是針對熔斷器的錯誤關閉,並不能解決根本問題,比如Feign客戶端調用遠程服務時,默認為8秒超時時間,如果在規定時間內沒有返回,同樣會跳轉到熔斷器進行處理。即使關閉了熔斷器的錯誤,但是總的錯誤處理還會是有這個問題出現。

那么要解決根本問題,就要從請求超時時間入手,因為有些服務可能存在調用時間長的問題,所以直接配置:

ribbon.ReadTimeout=60000
ribbon.ConnectTimeout=60000

這些才是真正解決請求超時的問題,如果不設置這個,被調用接口很慢時,會出現Read Timeout on Request。

而針對調用失敗重試的次數也可以設置:

ribbon.maxAutoRetries=0

 

參考:

https://github.com/spring-cloud/spring-cloud-netflix/issues/321

https://stackoverflow.com/questions/38080283/how-to-solve-timeout-feignclient

http://www.itmuch.com/spring-cloud-feign-ribbon-first-request-fail/

https://github.com/spring-cloud/spring-cloud-netflix/issues/696

http://www.jianshu.com/p/0eb13fd033a8

http://blog.csdn.net/qwlzxx/article/details/77163268

http://blog.csdn.net/clementad/article/details/54315805


免責聲明!

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



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