#配置Ribbon的超时时间
ribbon:
ReadTimeout: 60000
ConnectTimeout: 60000
MaxAutoRetries: 2
MaxAutoRetriesNextServer: 1
hystrix:
command:
default:
execution:
isolation:
strategy: SEMAPHORE
#配置hystrix的超时时间
thread:
timeoutInMilliseconds: 180000
ribbonTimeout = (RibbonReadTimeout + RibbonConnectTimeout) * (MaxAutoRetries + 1) * (MaxAutoRetriesNextServer + 1)
这里的Ribbon的负载均衡的总的超时时间是 720000而熔断的时间是180000 < 720000
其中,MaxAutoRetries 默认为2,MaxAutoRetriesNextServer 默认为1,所以我这里的具体值为:(600000+600000)x(2+1)*(1+1)=720000。
而 Hystrix 超时时间为 180000 < 720000,从逻辑上来讲,hystrixTimeout 要大于 ribbonTimeout,否则 hystrix 熔断了以后,ribbon 的重试就都没有意义了。
解决方法:
一、要么配置hystrix的超时时间不小于40000
二、要么调低 ribbon 的 timeOut 或者重试次数。