Hystrix circuit short-circuited and is OPEN

引起这个问题的原因是在一个滚动窗口内,失败了二十个(默认),就会发生短路,短路时间默认为5秒,5秒之内拒绝所有的请求,之后开始运行。

解决办法如下:

1.设置熔断器失败的个数,默认为20个,这里我给了1000个,只有超过1000个才会发生短路。

hystrix详细具体的配置信息可以谷歌一下,hystrix的配置。

hystrix.command.default.circuitBreaker.requestVolumeThreshold=1000

设置完成之后,没有出现短路的情况,但出现了

hystrix could not be queued for execution and no fallback available

2.这是feign线程池的问题,因为feign默认的线程池大小为10个,而本次测试使用了100个线程

解决办法是设置feign的核心线程池的数量。下面那个maxQueueSize可以不用设置,默认为-1,使用的是SynchronousQueue。

#hystrix.threadpool.default.maxQueueSize=1000

3.设置完成之后,又出现了time-out。

解决办法:设置断路器的超时

#断路器超时设置和请求的超时

hystrix.command.default.execution.timeout.enabled=true
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=300000
ribbon.ConnectTimeout=300000
ribbon.ReadTimeout=300000

出现timeout的原因:

请求是100个线程去访问,我们知道CPU的线程是上下文切换的,有些线程迟迟得不到执行权,就一直挂在那里了,一直挂,一直挂,直到满足了断路器的timeout,然后就被抛出异常了。

后面采用了fallback,发现会拒绝执行fallback,原因也是线程太少,设置一下回退的线程数量就好了。

#设置回退的最大线程数
hystrix.command.default.fallback.isolation.semaphore.maxConcurrentRequests=50

 

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值