Ribbon超時與Hystrix超時問題,為了確保Ribbon重試的時候不被熔斷,我們就需要讓Hystrix的超時時間大於Ribbon的超時時間,否則Hystrix命令超時后,該命令直接熔斷,重試機制就沒有任何意義了。
-
service-hi:
-
ribbon:
-
ReadTimeout: 2000
-
ConnectTimeout: 1000
-
MaxAutoRetries: 1
-
MaxAutoRetriesNextServer: 1
-
-
-
hystrix:
-
command:
-
default:
-
execution:
-
timeout:
-
enabled: true
-
isolation:
-
thread:
-
timeoutInMilliseconds: 8000
從上面的配置來說,ribbon超時配置為2000,請求超時后,該實例會重試1次,更新實例會重試1次。
所以hystrix的超時時間要大於 (1 + MaxAutoRetries + MaxAutoRetriesNextServer) * ReadTimeout 比較好,具體看需求進行配置。
Ribbon超時與Hystrix超時問題,為了確保Ribbon重試的時候不被熔斷,我們就需要讓Hystrix的超時時間大於Ribbon的超時時間,否則Hystrix命令超時后,該命令直接熔斷,重試機制就沒有任何意義了。
-
service-hi:
-
ribbon:
-
ReadTimeout: 2000
-
ConnectTimeout: 1000
-
MaxAutoRetries: 1
-
MaxAutoRetriesNextServer: 1
-
-
-
hystrix:
-
command:
-
default:
-
execution:
-
timeout:
-
enabled: true
-
isolation:
-
thread:
-
timeoutInMilliseconds: 8000
從上面的配置來說,ribbon超時配置為2000,請求超時后,該實例會重試1次,更新實例會重試1次。
所以hystrix的超時時間要大於 (1 + MaxAutoRetries + MaxAutoRetriesNextServer) * ReadTimeout 比較好,具體看需求進行配置。