• 记一次feign的问题排查(短路、线程池、队列)


    https://www.jianshu.com/p/f7fb59f43485

    昨天开了一百个线程采用feign去请求第三方项目,结果报错,出现了短路,大概是下面这样的。(feign整合了hystrix并且自动打开了熔断器)

    Hystrix circuit short-circuited and is OPEN

    。。。。。

    百度了一下,几乎没人碰到这个问题,于是去谷歌了,发现还真有人碰到这个问题。引起这个问题的原因是在一个滚动窗口内,失败了二十个(默认),就会发生短路,短路时间默认为5秒,5秒之内拒绝所有的请求,之后开始运行。然后解决办法如下:

    设置熔断器失败的个数,默认为20个,这里我给了1000个,只有超过1000个才会发生短路。hystrix详细具体的配置信息可以谷歌一下,hystrix的配置。

    hystrix.command.default.circuitBreaker.requestVolumeThreshold=1000

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

    hystrix could not be queued for execution and no fallback available.

    exo me? 不能队列执行?又去谷歌了一下,发现是feign线程池的问题,因为feign默认的线程池大小为10个,我却用了一百个线程,下面是github大佬的回答。

     
     

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

    hystrix.threadpool.default.coreSize=100

    #hystrix.threadpool.default.maxQueueSize=1000

    设置完成之后,又出现了一个问题,没错,又是time-out。

    对于这个问题很好解决,设置断路器的超时,前面写过一篇在有道云笔记里面。为了偷懒还是复制一下代码吧

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

    hystrix.command.default.execution.timeout.enabled=true

    hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=300000

    ribbon.ConnectTimeout=300000

    ribbon.ReadTimeout=300000

    现在就解决了。

    原因:出现timeout的问题,基于我的理论,当然只是基于我的空想。

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

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

    #设置回退的最大线程数

    hystrix.command.default.fallback.isolation.semaphore.maxConcurrentRequests=50



     ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    zuul组件封装了feign,重改了feign的默认配置,所以相同情况下不会出现

    Hystrix circuit short-circuited and is OPEN 等到问题

  • 相关阅读:
    MATLAB01
    Diffie-Hellman 密钥交换
    古典密码
    正则表达式
    装饰器初析
    进制转换的栈实现
    Log4j(异常日志)
    2018/6/6
    2018.1.1T19B3-u4
    2018.1.1T19-B3-U3jiangyi
  • 原文地址:https://www.cnblogs.com/crazylqy/p/10818865.html
Copyright © 2020-2023  润新知