• 避坑指南(四):zuul整合断路器监控线程池一直loading


    ​转载请注明作者及出处:

    作者:银河架构师

    原文链接:https://www.cnblogs.com/luas/p/12214002.html

    问题

    zuul整合断路器监控后,监控页面Thread Pools一直loading,控制台也无明显报错。

    分析

    zuul默认集成了ribbon和hystrix,虽然hystrix的默认隔离策略为thread,但是在zuul中,hystrix的默认隔离策略为semaphore。

    hystrix的默认隔离策略为thread

    zuul中hystrix的默认隔离策略为semaphore。

    如果zuul工程中,没有远程调用逻辑,如rest + ribbon、或者feign,此时,hystrix监控界面不展示线程池信息,一直是loading状态,如图。

    此种情况的原因为zuul hystrix默认隔离策略为semaphore,而不是thread。

    如果网关工程中,存在远程调用逻辑,无论rest + ribbon、或者feign,出现hystrix监控界面不展示情况,除了上述不存在远程调用逻辑的原因之外,还有可能是hystrix默认隔离策略的问题。hystrix默认隔离策略为thread,如果配置为semaphore,则远程调用部分的线程池则不会创建

    hystrix:
      command:
        default:
          execution:
            isolation:
              strategy: THREAD

    也可单独为某服务配置隔离策略。

    hystrix:
      command:
        default:
          execution:
            isolation:
              strategy: THREAD
        xmall-product:
          execution:
            isolation:
              strategy: SEMAPHORE
    如下图情况,原因为zuul hystrix默认隔离策略未配置为thread,而hystrix默认隔离策略为thread

    如下图情况,原因为zuul hystrix默认隔离策略为thread,而hystrix默认隔离策略为semaphore

    上述两种异常情况,均存在feign远程调用。

    解决

    将zuul中hystrix的默认隔离策略和hystrix的隔离策略设置为thread即可。

    zuul:
      ribbon-isolation-strategy: THREAD
      
    hystrix:
      command:
        default:
          execution:
            isolation:
              strategy: THREAD

    或者properties方式。

    zuul.ribbon-isolation-strategy=THREAD
    ​
    hystrix.command.default.execution.isolation.strategy=THREAD

    微信搜索【银河架构师】,发现更多精彩内容。

     技术资料领取方法:关注公众号,回复微服务,领取微服务相关电子书;回复MK精讲,领取MK精讲系列电子书;回复JAVA 进阶,领取JAVA进阶知识相关电子书;回复JAVA面试,领取JAVA面试相关电子书,回复JAVA WEB领取JAVA WEB相关电子书。

  • 相关阅读:
    php apc 安装
    apaache php 日记设计
    memcache windows64 位安装
    JavaScript的作用域与闭包
    怎样写一个简单的操作系统?
    php 关于锁的一些看法
    Windows版本Apache+php的Xhprof应用__[2]
    Windows版本Apache+php的Xhprof应用
    使用TortoiseGit对Git版本进行分支操作
    机器学习数据不均衡问题
  • 原文地址:https://www.cnblogs.com/luas/p/12214002.html
Copyright © 2020-2023  润新知