Ribbon超时与Hystrix超时问题,为了确保Ribbon重试的时候不被熔断,我们就需要让Hystrix的超时时间大于Ribbon的超时时间,否则Hystrix命令超时后,该命令直接熔断,重试机制就没有任何意义了。
从上面的配置来说,ribbon超时配置为1800,请求超时后,该实例会重试1次,更新实例会重试1次。
ribbon:
eager-load:
enabled: true # 饥饿加载(eager-load)模式
MaxAutoRetries: 1 # 对当前实例的重试次数
MaxAutoRetriesNextServer: 2 # 切换实例的重试次数
# ConnectTimeout: 10000 # 连接超时时间
ReadTimeout: 2500 # 读取数据超时
hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 2800 #缺省为1000
所以hystrix的超时时间要大于 (1 + MaxAutoRetries + MaxAutoRetriesNextServer) * ReadTimeout 比较好,具体看需求进行配置。
Ribbon超时与Hystrix超时问题,为了确保Ribbon重试的时候不被熔断,我们就需要让Hystrix的超时时间大于Ribbon的超时时间,否则Hystrix命令超时后,该命令直接熔断,重试机制就没有任何意义了。