hystrix.command.default和hystrix.threadpool.default中的default為預設commandkey
hystrix.command.default.execution.isolation.thread.timeoutinmilliseconds 命令執行超時時間,預設1000ms
hystrix.command.default.execution.timeout.enabled 執行是否啟用超時,預設啟用true
hystrix.command.default.execution.isolation.thread.interruptontimeout 發生超時是是否中斷,預設true
hystrix.command.default.execution.isolation.semaphore.maxconcurrentrequests 最大併發請求數,預設10,該引數當使用executionisolationstrategy.semaphore策略時才有效。如果達到最大併發請求數,請求會被拒絕。理論上選擇semaphore size的原則和選擇thread size一致,但選用semaphore時每次執行的單元要比較小且執行速度快(ms級別),否則的話應該用thread。
semaphore應該佔整個容器(tomcat)的執行緒池的一小部分。
這些引數可以應用於hystrix的thread和semaphore策略
hystrix.command.default.requestcache.enabled 預設true,需要過載getcachekey(),返回null時不快取
hystrix.command.default.requestlog.enabled 記錄日誌到hystrixrequestlog,預設true
hystrix.collapser.default.maxrequestsinbatch 單次批處理的最大請求數,達到該數量觸發批處理,預設integer.max_value
hystrix.collapser.default.timerdelayinmilliseconds 觸發批處理的延遲,也可以為建立批處理的時間+該值,預設10
hystrix.collapser.default.requestcache.enabled 是否對hystrixcollapser.execute() and hystrixcollapser.queue()的cache,預設true
執行緒數預設值10適用於大部分情況(有時可以設定得更小),如果需要設定得更大,那有個基本得公式可以follow:
requests per second at peak when healthy × 99th percentile latency in seconds + some breathing room
每秒最大支撐的請求數 (99%平均響應時間 + 快取值)
比如:每秒能處理1000個請求,99%的請求響應時間是60ms,那麼公式是:
1000 (0.060+0.012)
基本得原則時保持執行緒池盡可能小,他主要是為了釋放壓力,防止資源被阻塞。
當一切都是正常的時候,執行緒池一般僅會有1到2個執行緒啟用來提供服務
springCloud Hystrix實現容錯
在設定超時的情況下,如果對某個服務已經不可用時,所有新的請求都需要等待設定的超時時間,但此時這些等待時間已經毫無意義。斷路器應該事先快速失敗,如果在一段時間檢測到許多類似的錯誤,就會對該服務快速失敗,停止請求已停掉的服務。斷路器也應該可以自動診斷依賴的服務是否已經恢復正常。斷路器邏輯 1 正常情況下...
SpringCloud Hystrix 服務降級
1.編寫被關閉服務的返回資訊,需要實現fallbackfactory介面 component public class deptclientservicefallbackfactory implements fallbackfactory override public list queryall ...
springcloud hystrix熔斷機制
hystrixd的實現原理,基於執行緒隔離,再加上保護機制,才實現了熔斷 進行feign呼叫時,假如被呼叫方出現了網路故障或全部節點都不可用,這個時候就造成了呼叫方執行緒堵塞,最終導致呼叫方的執行緒耗盡,導致呼叫方資源耗盡,從而影響到所有服務最終資源耗盡,都不可用,這就是服務雪崩的現象 解決服務雪崩...