springcloud超时重试机制的先后顺序
![](https://img2022.cnblogs.com/blog/1501092/202204/1501092-20220408151946842-1863918190.png)
https://blog.csdn.net/zzzgd_666/article/details/83314833
1.如果hystrix.command.default.execution.timeout.enabled为true, 则会有两个执行方法超时的配置,一个就是ribbon的ReadTimeout, 一个就是熔断器hystrix的timeoutInMilliseconds, 此时谁的值小谁生效 2.如果hystrix.command.default.execution.timeout.enabled为false, 则熔断器不进行超时熔断,而是根据ribbon的ReadTimeout抛出的异常而熔断, 也就是取决于ribbonribbon的ConnectTimeout,配置的是请求服务的超时时间,除非服务找不到,或者网络原因,这个时间才会生效 3.ribbon还有MaxAutoRetries对当前实例的重试次数, MaxAutoRetriesNextServer对切换实例的重试次数, 如果ribbon的ReadTimeout超时, 或者ConnectTimeout连接超时,会进行重试操作 由于ribbon的重试机制,通常熔断的超时时间需要配置的比ReadTimeout长, ReadTimeout比ConnectTimeout长,否则还未重试,就熔断了 4.为了确保重试机制的正常运作,理论上(以实际情况为准)建议hystrix的超时时间为:(1 + MaxAutoRetries + MaxAutoRetriesNextServer) * ReadTimeout
一点点学习,一丝丝进步。不懈怠,才不会被时代淘汰