springcloud:feign、ribbon的超时时间和hystrix的超时熔断时间

1、ribbon的超时配置

ribbon:
  OkToRetryOnAllOperations: false #对所有操作请求都进行重试,默认false,包括连接超时(connectTimeout)和请求超时(readTimeOut)
  ReadTimeout: 3000   #负载均衡超时时间,默认值5000
  ConnectTimeout: 2000 #ribbon请求连接的超时时间,默认值2000
  MaxAutoRetries: 0     #对当前实例的重试次数,默认0,不包含首次调用
  MaxAutoRetriesNextServer: 0 #对切换实例的重试次数,默认1,不包含首次调用

ribbon的配置类参考DefaultClientConfigImpl
2、hystrix的熔断配置

hystrix:
  command:
    default:
      execution:
        timeout:
          enabled: true
        isolation:
          thread:
            timeoutInMilliseconds: 60000 #默认1000ms

3、feign的超时配置

feign:
  hystrix:
    enabled: true #默认为false,如果为false,则使用ribbon的超时设置和重试机制,否则使用feign的相关设置
  client:
    config:
      default:
        #连接到目标的时间,此处会收到注册中心启动中的影响。设置为3秒钟,如果注册中心有明显的不在线,基本是毫秒级熔断拒绝
        connectTimeout: 3000
        #获取目标连接后执行的最长时间,设置为32秒,即服务最长时
        readTimeout: 32000

注意事项:如果同时配置ribbon和feign的超时时间,以feign的为准

结论:根据上面分析,Hystrix的熔断时间要大于Feign或Ribbon的connectTimeout+readTimeout,
由于ribbon的重试次数为RetryCount = (maxAutoRetries + 1) * (maxAutoRetriesNextServer + 1),因此必须保证(maxAutoRetries + 1) * (maxAutoRetriesNextServer + 1)*(ConnectTimeout+ReadTimeout)< timeoutInMilliseconds,因为如果小于超时时间, 那就熔断了, 没有机会重试了。

具体可参考网址hystrix ,feign,ribbon的超时时间配置,以及原理分析

你可能感兴趣的:(spring,springboot,springcloud等,spring-cloud,feign,ribbon,hystrix)