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 比较好,具体看需求进行配置。