1、hystrix在生產中的建議html
一、保持timeout的默認值(1000ms),除非須要修改(其實一般會修改)java
二、保持threadpool的的線程數爲10個,除非須要更多linux
三、依賴標準的報警和監控系統來捕獲問題git
四、經過dashboards的實時監控來動態修改配置,直到滿意爲止github
2、配置信息(default或HystrixCommandKey)最經常使用的幾項數據結構
- 超時時間(默認1000ms,單位:ms)
- hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds
- hystrix.command.HystrixCommandKey.execution.isolation.thread.timeoutInMilliseconds
- 線程池核心線程數
- hystrix.threadpool.default.coreSize(默認爲10)
- Queue
- hystrix.threadpool.default.maxQueueSize(最大排隊長度。默認-1,使用SynchronousQueue。其餘值則使用 LinkedBlockingQueue。若是要從-1換成其餘值則需重啓,即該值不能動態調整,若要動態調整,須要使用到下邊這個配置)
- hystrix.threadpool.default.queueSizeRejectionThreshold(排隊線程數量閾值,默認爲5,達到時拒絕,若是配置了該選項,隊列的大小是該隊列)
- 注意:若是maxQueueSize=-1的話,則該選項不起做用
- 斷路器
- hystrix.command.default.circuitBreaker.requestVolumeThreshold(當在配置時間窗口內達到此數量的失敗後,進行短路。默認20個)
- hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds(短路多久之後開始嘗試是否恢復,默認5s)
- hystrix.command.default.circuitBreaker.errorThresholdPercentage(出錯百分比閾值,當達到此閾值後,開始短路。默認50%)
- fallback
- hystrix.command.default.fallback.isolation.semaphore.maxConcurrentRequests(調用線程容許請求HystrixCommand.GetFallback()的最大數量,默認10。超出時將會有異常拋出,注意:該項配置對於THREAD隔離模式也起做用)
3、監控hystrixui
說明:hystrix爲每個commandKey提供了計數器。原理:線程

附:清晰大圖htm
4、常見的hystrix事件類型隊列
- run()
- SUCCESS:run()成功,不觸發getFallback()
- FAILURE:run()拋異常,觸發getFallback()
- TIMEOUT:run()超時,觸發getFallback()
- BAD_REQUEST:run()拋出HystrixBadRequestException,不觸發getFallback()
- SHORT_CIRCUITED:斷路器開路,觸發getFallback()
- THREAD_POOL_REJECTED:線程池耗盡,觸發getFallback()
- FALLBACK_MISSING:沒有實現getFallback(),拋出異常
- getFallback()
- FALLBACK_SUCCESS:getFallback()成功,不拋異常
- FALLBACK_FAILURE:getFallback()失敗,拋異常
- FALLBACK_REJECTION:調用getFallback()的線程數超量,拋異常
5、Metrics storage and Dashboard
僅僅記錄hystrix1.5.0及其後續版本,以前的版本的數據結構不同。
http://www.ahlinux.com/java/18235.html