避坑指南(四):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相關電子書。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM