zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    MySQL表之间的关系概述
    网路通信简介
    多态与鸭子类型
    组合与类继承
    类与对象的属性与方法以及封装
    对象与类的初始
    2018.12.12
    2018.12.9浮动布局,盒子显隐,定位,z-index,流式布局,小米开头
    2018.12.8浮动布局,display总结,overflow,清浮动
    2018.12.7边界圆角redius,背景图设置,平铺,精灵图,盒子伪类索引
  • 原文地址:https://www.cnblogs.com/sunshinekevin/p/12183138.html
Copyright © 2011-2022 走看看