springcloud中ribbon及hystrix时间配置以及重试机制总结如下
1.增加请求时间
ribbon:
# 请求连接超时时间
ConnectTimeout: 3000
4.2.增加处理时间
ribbon:
# 处理超时时间
ReadTimeout: 600000
2.增加断路器超时时间
hystrix:
command:
default:
execution:
timeout:
enabled: true
isolation:
thread:
#设置调用者等待命令执行得超时限制,超过此时间,hystrixCommand被标记未TIMEOUT,并执行回退逻辑,默认值1000 毫秒=1秒
timeoutInMilliseconds: 1800000
3.增加feign客户端的连接和读取时间(此时间需与处理时间同步配置)
feign:
client:
config:
default:
#此配置用于增加请求方feign客户端的连接和读取时间,主要应用于请求方(不包含被请求方)
connectTimeout: 700000
readTimeout: 700000
4.开启重试
spring:
cloud:
loadbalancer:
retry:
#这个表示在响应非正常情况时,表示开启重试机制
enable: true
5.重试次数的配置
ribbon:
# 请求连接超时时间
ConnectTimeout: 3000
# 请求处理超时时间
ReadTimeout: 600000
## 当前实例重试次数,尝试失败会更换下一个实例
MaxAutoRetries: 1
## 切换相同Server的次数
MaxAutoRetriesNextServer: 1
## 对get和request都进行重试,建议关闭,因为POST请求会由于缓存了请求体,此时可能会影响服务器的资源。
OkToRetryOnAllOperations: false
eureka:
#Eureka对Ribbon服务实例的维护实现,默认为true
enabled: true
6.熔断器的配置
hystrix:
command:
default:
execution:
timeout:
enabled: true
isolation:
thread:
#设置调用者等待命令执行得超时限制,超过此时间,hystrixCommand被标记未TIMEOUT,并执行回退逻辑,默认值1000 毫秒=1秒
timeoutInMilliseconds: 1800000
#熔断器器配置
circuitBreaker:
#是否启用熔断器,默认是true
enabled: true
#10秒内请求数量,默认20,如果没有达到该数量,即使请求全部失败,也不会触发断路器打开
requestVolumeThreshold: 20
# 失败请求百分比,达到该比例则触发断路器打开,默认50%(此参数设置需在10秒内达到了requestVolumeThreshold所设置的请求数量)
errorThresholdPercentage: 50
# 断路器打开多长时间后,再次允许尝试访问(半开),仍失败则继续保持打开状态,如成功访问则关闭断路器,默认 5000
sleepWindowInMilliseconds: 3000