启用hystrix
feign:
hystrix:
enabled: true
client:
config:
default: ##默认配置,可以单独配置一个服务
connectTimeout: 10000 # 连接超时时间
readTimeout: 20000 # 读超时时间设置
到这里调用fegin基本都是失败?why hystrix默认熔断时间是1秒
添加hystrix熔断时间设置
hystrix:
command:
default: ##默认配置,可以单独配置一个服务
execution:
isolation:
thread:
##调用方法超时时间 fegin的 connectTime + readTimeout
##如果小于 fegin的时间,那么调用中,直接回进入熔断方法,业务状态可能会出现问题
timeoutInMilliseconds: 30000
到这里一个fegin加hystrix基本可以进入开发阶段了。
但是一压测,发现请求数量上不去,fegin大于10个请求后基本进入熔断方法
因为hystrix是使用线程池的默认核心线程数为10,这样请求并发大于10就回进入熔断哦。
打开logback.xml netflix的debug信息,调用时候的的属性配置信息,做参考
hystrix 配置解读请移步 这里 配置避坑
<logger name="com.netflix" level="debug"/>
hystrix:
threadpool:
##全局核心线程池大小,可以单独配置其中一个feginKey
default:
coreSize: 100 ##核心执行线程,直接提升并发量
#coreSize填满后BlockingQueue列队数量大小,不配置默认是-1 走同步列队
maxQueueSize: 1000
#排队线程数量阈值,默认为5,达到800后直接熔断
queueSizeRejectionThreshold: 800
command:
default:
circuitBreaker:
## 10s 窗口期失败数量触发熔断
requestVolumeThreshold: 20
## 出错百分比阈值,当达到此阈值后50%触发熔断
errorThresholdPercentage: 50
execution:
isolation:
thread:
##调用方法超时时间 connectTime + readTimeout
timeoutInMilliseconds: 30000