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,因为如果小于超时时间, 那就熔断了, 没有机会重试了。
167万+

被折叠的 条评论
为什么被折叠?



