您好,登錄后才能下訂單哦!
概述
Spring Cloud中,客戶端的負載均衡使用的是Ribbon
,Ribbon
的超時時間默認很短,需要進行調整。
Spring Cloud版本
Edgware.SR3
Ribbon timeout設置
Ribbon
的默認timeout
時間是1秒,這個可以在RibbonClientConfiguration
類中看到。
public class RibbonClientConfiguration { public static final int DEFAULT_CONNECT_TIMEOUT = 1000; public static final int DEFAULT_READ_TIMEOUT = 1000; }
當你在日志里看到如下報錯的時候,說明Ribbon
發生timeout
了。
feign.RetryableException: Read timed out executing POST http://xxxapp/xxxurl
at feign.FeignException.errorExecuting(FeignException.java:67)
at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:104)
at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:76)
at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:103)
DEFAULT_READ_TIMEOUT
設置為1秒,有點短了,雖然大部分應用接口,如果響應時間超過了1秒,已經是非常長的,但是在流量比較大的時候,應用的接口響應本來就會變慢,為了防止線上故障,最好將這個時間設置為長一些。一般是3秒到5秒。
我們可以在application.yml
或者bootstrap.yml
文件中如下設置:
ribbon:
ReadTimeout: 5000
ConnectTimeout: 5000
注意,在Eclipse
或者Intellij IDEA
里,這兩個timeout
時間屬性是不會有提示的,這個很正常。不是所有的屬性,IDE都能正常提示的,不過沒關系,不影響使用的。只要你配置了,Ribbon
就好按照你配置的來。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。如果你想了解更多相關內容請查看下面相關鏈接
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。