spring cloud各種超時時間設定
如果是zuul(閘道器)的超時時間需要設定zuul、hystrix、ribbon等三部分:
zuul超時設定
#zuul超時設定
#預設1000
zuul.host.socket-timeout-millis=2000
#預設2000
zuul.host.connect-timeout-millis=4000
hystrix超時設定
#熔斷器啟用
feign.hystrix.enabled=true
hystrix.command.default.execution.timeout.enabled=true
#斷路器的超時時間,下級服務返回超出熔斷器時間,即便成功,消費端訊息也是TIMEOUT,所以一般斷路器的超時時間需要大於ribbon的超時時間,ribbon是真正去呼叫下級服務
#當服務的返回時間大於ribbon的超時時間,會觸發重試
#斷路器的超時時間預設為1000ms,太小了
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=60000
#斷路器詳細設定
#當在配置時間視窗內達到此數量的失敗後,進行短路。預設20個)
#hystrix.command.default.circuitBreaker.requestVolumeThreshold=20
#短路多久以後開始嘗試是否恢復,預設5s)
#hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds=5
#出錯百分比閾值,當達到此閾值後,開始短路。預設50%)
#hystrix.command.default.circuitBreaker.errorThresholdPercentage=50%
ribbon超時設定
#ribbon請求連線的超時時間,限制3秒內必須請求到服務,並不限制服務處理的返回時間
ribbon.ConnectTimeout=3000
ribbon.SocketTimeout=5000
#請求處理的超時時間 下級服務響應最大時間,超出時間消費方(路由也是消費方)返回timeout
ribbon.ReadTimeout=5000
# 單獨設定某個服務的超時時間,會覆蓋其他的超時時間限制,服務的名稱以註冊中心頁面顯示的名稱為準,超時時間不可大於斷路器的超時時間
#service-a.ribbon.ReadTimeout=50000
#service-a.ribbon.ConnectTimeout=50000
重試機制
#重試機制
#該引數用來開啟重試機制,預設是關閉
spring.cloud.loadbalancer.retry.enabled=true
#對所有操作請求都進行重試
ribbon.OkToRetryOnAllOperations=true
#對當前例項的重試次數
ribbon.MaxAutoRetries=1
#切換例項的重試次數
ribbon.MaxAutoRetriesNextServer=1
#根據如上配置,當訪問到故障請求的時候,它會再嘗試訪問一次當前例項(次數由MaxAutoRetries配置),
#如果不行,就換一個例項進行訪問,如果還是不行,再換一次例項訪問(更換次數由MaxAutoRetriesNextServer配置),
#如果依然不行,返回失敗資訊。