hystrix相关配置
Execution相關(guān)的屬性的配置
hystrix.command.default.execution.isolation.strategy?隔離策略,默認是Thread,?可選Thread| Semaphor
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds?命令執(zhí)行超時時 間,默認1000ms
hystrix.command.default.execution.timeout.enabled?執(zhí)行是否啟用超時,默認啟用true
hystrix.command.default.execution.isolation.thread.interruptOnTimeout?發(fā)生超時是是否中斷, 默認true
hystrix.command.default.execution.isolation.semaphore.maxConcurrentRequests?最大并發(fā)請求 數(shù),默認10,該參數(shù)當使用ExecutionIsolationStrategy.SEMAPHORE策略時才有效。如果達到最大并發(fā)請求 數(shù),請求會被拒絕。理論上選擇semaphore?size的原則和選擇thread?size一致,但選用semaphore時每次執(zhí)行 的單元要比較小且執(zhí)行速度快(ms級別),否則的話應該用thread。 semaphore應該占整個容器(tomcat)的線程池的一小部分。 Fallback相關(guān)的屬性 這些參數(shù)可以應用于Hystrix的THREAD和SEMAPHORE策略
hystrix.command.default.fallback.isolation.semaphore.maxConcurrentRequests?如果并發(fā)數(shù)達到 該設置值,請求會被拒絕和拋出異常并且fallback不會被調(diào)用。默認10
hystrix.command.default.fallback.enabled?當執(zhí)行失敗或者請求被拒絕,是否會嘗試調(diào)用
hystrixCommand.getFallback()?。默認true
Circuit?Breaker相關(guān)的屬性
hystrix.command.default.circuitBreaker.enabled?用來跟蹤circuit的健康性,如果未達標則讓request短路。默認true
hystrix.command.default.circuitBreaker.requestVolumeThreshold?一個rolling?window內(nèi)最小的請 求數(shù)。如果設為20,那么當一個rolling?window的時間內(nèi)(比如說1個rolling?window是10秒)收到19個請求, 即使19個請求都失敗,也不會觸發(fā)circuit?break。默認20
hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds?觸發(fā)短路的時間值,當該值設 為5000時,則當觸發(fā)circuit?break后的5000毫秒內(nèi)都會拒絕request,也就是5000毫秒后才會關(guān)閉circuit。 默認5000
hystrix.command.default.circuitBreaker.errorThresholdPercentage錯誤比率閥值,如果錯誤率>=該 值,circuit會被打開,并短路所有請求觸發(fā)fallback。默認50
hystrix.command.default.circuitBreaker.forceOpen?強制打開熔斷器,如果打開這個開關(guān),那么拒絕所 有request,默認false
hystrix.command.default.circuitBreaker.forceClosed?強制關(guān)閉熔斷器?如果這個開關(guān)打開,circuit將 一直關(guān)閉且忽略circuitBreaker.errorThresholdPercentage
Metrics相關(guān)參數(shù)
hystrix.command.default.metrics.rollingStats.timeInMilliseconds?設置統(tǒng)計的時間窗口值的,毫秒 值,circuit?break?的打開會根據(jù)1個rolling?window的統(tǒng)計來計算。若rolling?window被設為10000毫秒, 則rolling?window會被分成n個buckets,每個bucket包含success,failure,timeout,rejection的次數(shù) 的統(tǒng)計信息。默認10000
hystrix.command.default.metrics.rollingStats.numBuckets?設置一個rolling?window被劃分的數(shù) 量,若numBuckets=10,rolling?window=10000,那么一個bucket的時間即1秒。必須符合rolling?window? %?numberBuckets?==?0。默認10
hystrix.command.default.metrics.rollingPercentile.enabled?執(zhí)行時是否enable指標的計算和跟蹤, 默認true
hystrix.command.default.metrics.rollingPercentile.timeInMilliseconds?設置rolling? percentile?window的時間,默認60000
hystrix.command.default.metrics.rollingPercentile.numBuckets?設置rolling?percentile? window的numberBuckets。邏輯同上。默認6
hystrix.command.default.metrics.rollingPercentile.bucketSize?如果bucket?size=100,window =10s,若這10s里有500次執(zhí)行,只有最后100次執(zhí)行會被統(tǒng)計到bucket里去。增加該值會增加內(nèi)存開銷以及排序 的開銷。默認100
hystrix.command.default.metrics.healthSnapshot.intervalInMilliseconds?記錄health?快照(用 來統(tǒng)計成功和錯誤綠)的間隔,默認500ms
Request?Context?相關(guān)參數(shù)
hystrix.command.default.requestCache.enabled?默認true,需要重載getCacheKey(),返回null時不 緩存
?hystrix.command.default.requestLog.enabled?記錄日志到HystrixRequestLog,默認true
?
?Collapser?Properties?相關(guān)參數(shù)
?
?hystrix.collapser.default.maxRequestsInBatch?單次批處理的最大請求數(shù),達到該數(shù)量觸發(fā)批處理,默認 Integer.MAX_VALU
?
?hystrix.collapser.default.timerDelayInMilliseconds?觸發(fā)批處理的延遲,也可以為創(chuàng)建批處理的時間 +該值,默認10
?
?hystrix.collapser.default.requestCache.enabled?是否對HystrixCollapser.execute()?and? HystrixCollapser.queue()的cache,默認true
?
?ThreadPool?相關(guān)參數(shù)
?
?線程數(shù)默認值10適用于大部分情況(有時可以設置得更小),如果需要設置得更大,那有個基本得公式可以 follow: requests?per?second?at?peak?when?healthy?×?99th?percentile?latency?in?seconds?+?some? breathing?room 每秒最大支撐的請求數(shù)?(99%平均響應時間?+?緩存值) 比如:每秒能處理1000個請求,99%的請求響應時間是60ms,那么公式是: 1000?(0.060+0.012)
?
?基本得原則時保持線程池盡可能小,他主要是為了釋放壓力,防止資源被阻塞。 當一切都是正常的時候,線程池一般僅會有1到2個線程激活來提供服務
?
?hystrix.threadpool.default.coreSize?并發(fā)執(zhí)行的最大線程數(shù),默認10
?
?hystrix.threadpool.default.maxQueueSize?BlockingQueue的最大隊列數(shù),當設為-1,會使用
?
?SynchronousQueue,值為正時使用LinkedBlcokingQueue。該設置只會在初始化時有效,之后不能修改threadpool的queue?size,除非reinitialising?thread?executor。默認-1。
?
?hystrix.threadpool.default.queueSizeRejectionThreshold?即使maxQueueSize沒有達到,達到 queueSizeRejectionThreshold該值后,請求也會被拒絕。因為maxQueueSize不能被動態(tài)修改,這個參數(shù)將允 許我們動態(tài)設置該值。if?maxQueueSize?==?-1,該字段將不起作用 hystrix.threadpool.default.keepAliveTimeMinutes?如果corePoolSize和maxPoolSize設成一樣(默認 實現(xiàn))該設置無效。如果通過plugin(https://github.com/Netflix/Hystrix/wiki/Plugins)使用自定義 實現(xiàn),該設置才有用,默認1.
?hystrix.threadpool.default.metrics.rollingStats.timeInMilliseconds?線程池統(tǒng)計指標的時間,默 認10000
?
?hystrix.threadpool.default.metrics.rollingStats.numBuckets?將rolling?window劃分為n個 buckets,默認10
?
?
總結(jié)
以上是生活随笔為你收集整理的hystrix相关配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: feign整合hystrix:
- 下一篇: zuul是什么?