Spring Cloud Netflix Hystrix官方文档翻译之:配置

简介

Hystrix使用Archaius作为配置属性的默认实现。

下面的文档描述了默认的HystrixPropertiesStrategy实现,除非您使用插件覆盖它。

每个属性有四个优先级:

1.代码的全局默认值

如果以下3个选项都没有设置,这是默认设置。

全局默认值在下表中显示为“Default Value”。

2.动态全局默认属性

可以使用属性更改全局默认值。

全局默认属性名在下面的表中显示为“Default Property”。

3.代码中的实例默认值

您可以定义特定于实例的默认值。例子:

HystrixCommandProperties.Setter()
   .withExecutionTimeoutInMilliseconds(int value)

您可以将这类命令以类似的方式插入到HystrixCommand构造函数中:

public HystrixCommandInstance(int id) {
    super(Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("ExampleGroup"))
        .andCommandPropertiesDefaults(HystrixCommandProperties.Setter()
               .withExecutionTimeoutInMilliseconds(500)));
    this.id = id;
}

对于通常设置的初值,有一些方便的构造函数。这里有一个例子:

public HystrixCommandInstance(int id) {
    super(HystrixCommandGroupKey.Factory.asKey("ExampleGroup"), 500);
    this.id = id;
}

4.动态实例属性

您可以动态地设置特定于实例的值,这些值覆盖了前面三个级别的缺省值。

动态实例属性名在下面的表中显示为“Instance Property”。

例子:

Instance Property hystrix.command.HystrixCommandKey.execution.isolation.thread.timeoutInMilliseconds

使用目标HystrixCommand 的HystrixCommandKey.name()的值替换属性中的HystrixCommandKey 。

例如,如果key 名为“SubscriberGetAccount”,则属性名为:

hystrix.command.SubscriberGetAccount.execution.isolation.thread.timeoutInMilliseconds

Command属性

以下属性控制HystrixCommand行为:

Execution

以下属性控制HystrixCommand.run()的执行方式。

execution.isolation.strategy

此属性指示HystrixCommand.run()使用以下两个选项之一执行隔离策略:

  • THREAD 它在单独的线程上执行,并发请求受线程池中线程数量的限制
  • SEMAPHORE 它在调用线程上执行,并发请求受信号量计数的限制

 THREAD 还是SEMAPHORE 

默认情况下,以及推荐的设置,是使用线程隔离(THREAD)运行HystrixCommands,使用信号量隔离(SEMAPHORE)运行HystrixObservableCommands 。

在线程中执行的命令具有额外的一层保护,可以防止网络超时所能提供的延迟。

通常,您应该为HystrixCommands使用信号量隔离的惟一时间是当调用的容量非常大(每秒数百个,每个实例),以至于单独线程的开销过高时;这通常只适用于非网络调用。

Netflix API有100多个命令运行在40多个线程池中,只有少数命令不在线程中运行——这些命令从内存缓存中获取元数据,或者是线程隔离命令的外观。(有关这方面的更多信息,请参见“Primary + Secondary with Fallback”模式)。

Spring Cloud Netflix Hystrix官方文档翻译之:配置_第1张图片

 有关此决策的更多信息,请参见隔离是如何工作的。

 

Default Value THREAD (see ExecutionIsolationStrategy.THREAD)
Possible Values THREAD, SEMAPHORE
Default Property hystrix.command.default.execution.isolation.strategy
Instance Property hystrix.command.HystrixCommandKey.execution.isolation.strategy
How to Set Instance Default:
// to use thread isolation
HystrixCommandProperties.Setter()
   .withExecutionIsolationStrategy(ExecutionIsolationStrategy.THREAD)
// to use semaphore isolation
HystrixCommandProperties.Setter()
   .withExecutionIsolationStrategy(ExecutionIsolationStrategy.SEMAPHORE)

 execution.isolation.thread.timeoutInMilliseconds

此属性设置调用方观察超时并退出命令执行的毫秒时间。Hystrix将HystrixCommand标记为超时,并执行回退逻辑。请注意,如果需要的话,可以对每个命令进行关闭超时的配置(请参见command.timeout.enabled)。

注意:超时将在HystrixCommand.queue()上触发,即使调用方从未在结果的Future调用get()。在Hystrix 1.4.0之前,只有对get()的调用才会触发超时机制在这种情况下生效。

Default Value 1000
Default Property hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds
Instance Property hystrix.command.HystrixCommandKey.execution.isolation.thread.timeoutInMilliseconds
How to Set Instance Default
HystrixCommandProperties.Setter()
   .withExecutionTimeoutInMilliseconds(int value)

 execution.timeout.enabled

该属性指示HystrixCommand.run()执行是否应该有超时。

Default Value true
Default Property hystrix.command.default.execution.timeout.enabled
Instance Property hystrix.command.HystrixCommandKey.execution.timeout.enabled
How to Set Instance Default
HystrixCommandProperties.Setter()
   .withExecutionTimeoutEnabled(boolean value)

 execution.isolation.thread.interruptOnTimeout

此属性指示是否应在超时发生时中断HystrixCommand.run()执行。

Default Value true
Default Property hystrix.command.default.execution.isolation.thread.interruptOnTimeout
Instance Property hystrix.command.HystrixCommandKey.execution.isolation.thread.interruptOnTimeout
How to Set Instance Default
HystrixCommandProperties.Setter()
   .withExecutionIsolationThreadInterruptOnTimeout(boolean value)

 execution.isolation.thread.interruptOnCancel

此属性指示是否应该在取消时中断HystrixCommand.run()执行。

Default Value false
Default Property hystrix.command.default.execution.isolation.thread.interruptOnCancel
Instance Property hystrix.command.HystrixCommandKey.execution.isolation.thread.interruptOnCancel
How to Set Instance Default
HystrixCommandProperties.Setter()
   .withExecutionIsolationThreadInterruptOnCancel(boolean value)

 execution.isolation.semaphore.maxConcurrentRequests

当您使用ExecutionIsolationStrategy.SEMAPHORE时,此属性将设置HystrixCommand.run()方法允许的最大请求数。

如果达到此最大并发限制,则后续请求将被拒绝。

当您调整一个信号量大小时所使用的逻辑基本上与选择要添加多少线程到线程池时相同,但是信号量的开销要小得多,而且通常执行速度要快得多(亚毫秒),否则您将使用线程。

例如,在单个实例上的5000rps用于查找内存中收集的指标,可以看到它只处理2个信号量。

隔离原则仍然是相同的,因此信号量应该只占整个容器(即Tomcat)线程池的一小部分,而不是全部或大部分,否则它就不能提供保护。

Default Value 10
Default Property hystrix.command.default.execution.isolation.semaphore.maxConcurrentRequests
Instance Property hystrix.command.HystrixCommandKey.execution.isolation.semaphore.maxConcurrentRequests
How to Set Instance Default
HystrixCommandProperties.Setter()
   .withExecutionIsolationSemaphoreMaxConcurrentRequests(int value)

 Fallback

以下属性控制HystrixCommand.getFallback()的执行方式。这些属性同时适用于ExecutionIsolationStrategy.THREAD和ExecutionIsolationStrategy.SEMAPHORE。

fallback.isolation.semaphore.maxConcurrentRequests

此属性设置允许从调用线程发出的HystrixCommand.getFallback()方法的最大请求数。

如果遇到最大并发限制,则后续请求将被拒绝,并引发异常,因为无法检索回退。

Default Value 10
Default Property hystrix.command.default.fallback.isolation.semaphore.maxConcurrentRequests
Instance Property hystrix.command.HystrixCommandKey.fallback.isolation.semaphore.maxConcurrentRequests
How to Set Instance Default
HystrixCommandProperties.Setter()
   .withFallbackIsolationSemaphoreMaxConcurrentRequests(int value)

fallback.enabled

Since: 1.2

此属性确定在发生失败或拒绝时是否尝试调用HystrixCommand.getFallback()。

Default Value true
Default Property hystrix.command.default.fallback.enabled
Instance Property hystrix.command.HystrixCommandKey.fallback.enabled
How to Set Instance Default
HystrixCommandProperties.Setter()
   .withFallbackEnabled(boolean value)

Circuit Breaker

断路器属性,控制HystrixCircuitBreaker的行为。

circuitBreaker.enabled

此属性确定断路器是否将用于跟踪健康状态并在跳闸时短路请求。

Default Value true
Default Property hystrix.command.default.circuitBreaker.enabled
Instance Property hystrix.command.HystrixCommandKey.circuitBreaker.enabled
How to Set Instance Default
HystrixCommandProperties.Setter()
   .withCircuitBreakerEnabled(boolean value)

 circuitBreaker.requestVolumeThreshold

此属性设置滚动窗口中触发电路的最小请求数。例如,如果值是20,那么如果在滚动窗口中只接收到19个请求(比如10秒的窗口),那么即使所有19个请求都失败了,电路也不会断开。

Default Value 20
Default Property hystrix.command.default.circuitBreaker.requestVolumeThreshold
Instance Property hystrix.command.HystrixCommandKey.circuitBreaker.requestVolumeThreshold
How to Set Instance Default
HystrixCommandProperties.Setter()
   .withCircuitBreakerRequestVolumeThreshold(int value)

circuitBreaker.sleepWindowInMilliseconds

此属性设置断开电路后拒绝请求的时间量,然后允许再次尝试确定是否应该再次关闭电路。

Default Value 5000
Default Property hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds
Instance Property hystrix.command.HystrixCommandKey.circuitBreaker.sleepWindowInMilliseconds
How to Set Instance Default
HystrixCommandProperties.Setter()
   .withCircuitBreakerSleepWindowInMilliseconds(int value)

 circuitBreaker.errorThresholdPercentage

此属性将错误百分比设置为电路应该断开并开始短路请求以回退逻辑的错误百分比或以上。

Default Value 50
Default Property hystrix.command.default.circuitBreaker.errorThresholdPercentage
Instance Property hystrix.command.HystrixCommandKey.circuitBreaker.errorThresholdPercentage
How to Set Instance Default
HystrixCommandProperties.Setter()
   .withCircuitBreakerErrorThresholdPercentage(int value)

 circuitBreaker.forceOpen

如果此属性为真,则强制断路器进入开路(跳闸)状态,在该状态下,断路器将拒绝所有请求。

该属性优先于circuitBreaker.forceClosed。

Default Value false
Default Property hystrix.command.default.circuitBreaker.forceOpen
Instance Property hystrix.command.HystrixCommandKey.circuitBreaker.forceOpen
How to Set Instance Default
HystrixCommandProperties.Setter()
   .withCircuitBreakerForceOpen(boolean value)

circuitBreaker.forceClosed

如果此属性为真,则强制断路器进入关闭状态,在该状态下,无论错误百分比如何,它都将允许请求。

circuitBreaker.forceOpen属性具有优先级,因此如果它被设置为true,该属性将不执行任何操作。

Default Value false
Default Property hystrix.command.default.circuitBreaker.forceClosed
Instance Property hystrix.command.HystrixCommandKey.circuitBreaker.forceClosed
How to Set Instance Default
HystrixCommandProperties.Setter()
   .withCircuitBreakerForceClosed(boolean value)

Metrics

以下属性与从HystrixCommand和HystrixObservableCommand的执行捕获指标有关。

metrics.rollingStats.timeInMilliseconds

此属性设置统计滚动窗口的持续时间(以毫秒为单位)。这是Hystrix为断路器使用和发布保存指标的时间。

从1.4.12开始,该属性只影响初始度量的创建,并且在启动后对该属性所做的调整不会生效。这避免了度量数据丢失,并允许对度量数据收集进行优化。

窗口按这些增量分为bucket和“rolls”。

例如,如果将此属性设置为10秒(10000),并带有10个1秒的桶,则下面的图表示如何打开新桶和关闭旧桶:

 Spring Cloud Netflix Hystrix官方文档翻译之:配置_第2张图片

在“getLatestBucket”上,如果传递给I-second窗口一个新桶,则会创建一个新的桶,其余的将被忽略,最老的将被删除。

Default Value 10000
Default Property hystrix.command.default.metrics.rollingStats.timeInMilliseconds
Instance Property hystrix.command.HystrixCommandKey.metrics.rollingStats.timeInMilliseconds
How to Set Instance Default
HystrixCommandProperties.Setter()
   .withMetricsRollingStatisticalWindowInMilliseconds(int value)

 metrics.rollingStats.numBuckets

此属性设置滚动统计窗口所划分的桶的数量。

注意:以下内容必须正确— “metrics.rollingStats.timeInMilliseconds % metrics.rollingStats.numBuckets == 0“ —否则它将抛出一个exception。换句话说,10000/10可以,10000/20也可以,但是10000/7不行。

从1.4.12开始,该属性只影响初始度量的创建,并且在启动后对该属性所做的调整不会生效。这避免了度量数据丢失,并允许对度量数据收集进行优化。

Default Value 10
Possible Values Any value that metrics.rollingStats.timeInMilliseconds can be evenly divided by. The result however should be buckets measuring hundreds or thousands of milliseconds. Performance at high volume has not been tested with buckets <100ms.
Default Property hystrix.command.default.metrics.rollingStats.numBuckets
Instance Property hystrix.command.HystrixCommandKey.metrics.rollingStats.numBuckets
How to Set Instance Default
HystrixCommandProperties.Setter()
   .withMetricsRollingStatisticalWindowBuckets(int value)

metrics.rollingPercentile.enabled

此属性指示是否应跟踪执行延迟并以百分比计算执行延迟。如果禁用它们,则所有汇总统计信息(平均百分比)将返回-1。

Default Value true
Default Property hystrix.command.default.metrics.rollingPercentile.enabled
Instance Property hystrix.command.HystrixCommandKey.metrics.rollingPercentile.enabled
How to Set Instance Default
HystrixCommandProperties.Setter()
   .withMetricsRollingPercentileEnabled(boolean value)

 

 metrics.rollingPercentile.timeInMilliseconds

此属性设置滚动窗口的持续时间,在滚动窗口中执行时间保持不变,以允许以毫秒为单位的百分比计算。

窗口按这些增量分为bucket和“rolls”。

从1.4.12开始,该属性只影响初始度量的创建,并且在启动后对该属性所做的调整不会生效。这避免了度量数据丢失,并允许对度量数据收集进行优化。

Default Value 60000
Default Property hystrix.command.default.metrics.rollingPercentile.timeInMilliseconds
Instance Property hystrix.command.HystrixCommandKey.metrics.rollingPercentile.timeInMilliseconds
How to Set Instance Default
HystrixCommandProperties.Setter()
   .withMetricsRollingPercentileWindowInMilliseconds(int value)

 

metrics.rollingPercentile.numBuckets

此属性设置rollingPercentile窗口将被划分为的桶的数量。

注意:以下内容必须为真-“metrics.rollingPercentile”。timeInMilliseconds % metrics.rollingPercentile。numbucket == 0 " -否则它将抛出一个异常。

换句话说,60000/6可以,60000/60也可以,但是100007不行。

从1.4.12开始,该属性只影响初始度量的创建,并且在启动后对该属性所做的调整不会生效。这避免了度量数据丢失,并允许对度量数据收集进行优化。

Default Value 6
Possible Values Any value that metrics.rollingPercentile.timeInMilliseconds can be evenly divided by. The result however should be buckets measuring thousands of milliseconds. Performance at high volume has not been tested with buckets <1000ms.
Default Property hystrix.command.default.metrics.rollingPercentile.numBuckets
Instance Property hystrix.command.HystrixCommandKey.metrics.rollingPercentile.numBuckets
How to Set Instance Default
HystrixCommandProperties.Setter()
   .withMetricsRollingPercentileWindowBuckets(int value)

 metrics.rollingPercentile.bucketSize

此属性设置每个桶保存的最大执行次数。如果在这段时间内执行了更多的操作,那么它们就会在桶的开始处进行包装并开始重写。

例如,如果bucket size被设置为100,并且表示一个10秒的bucket窗口,但是在这段时间内执行了500次,那么只有最后的100次执行将保留在这10秒的bucket中。

如果增加这个大小,还会增加存储值所需的内存量,并增加排序列表以进行百分比计算所需的时间。

从1.4.12开始,该属性只影响初始度量的创建,并且在启动后对该属性所做的调整不会生效。这避免了度量数据丢失,并允许对度量数据收集进行优化。

Default Value 100
Default Property hystrix.command.default.metrics.rollingPercentile.bucketSize
Instance Property hystrix.command.HystrixCommandKey.metrics.rollingPercentile.bucketSize
How to Set Instance Default
HystrixCommandProperties.Setter()
   .withMetricsRollingPercentileBucketSize(int value)

metrics.healthSnapshot.intervalInMilliseconds

此属性设置在允许获取计算成功和错误百分比以及影响断路器状态的健康快照之间等待的时间(以毫秒为单位)。

在大容量电路中,错误百分比的连续计算可能会占用CPU,因此这个属性允许您控制计算的频率

Default Value 500
Default Property hystrix.command.default.metrics.healthSnapshot.intervalInMilliseconds
Instance Property hystrix.command.HystrixCommandKey.metrics.healthSnapshot.intervalInMilliseconds
How to Set Instance Default
HystrixCommandProperties.Setter()
   .withMetricsHealthSnapshotIntervalInMilliseconds(int value)

 Request Context

这些属性与HystrixCommand使用的HystrixRequestContext功能有关。

 requestCache.enabled

此属性指示是否应该将HystrixCommand.getCacheKey()与HystrixRequestCache一起使用,以通过请求范围缓存提供重复数据删除功能。

Default Value true
Default Property hystrix.command.default.requestCache.enabled
Instance Property hystrix.command.HystrixCommandKey.requestCache.enabled
How to Set Instance Default
HystrixCommandProperties.Setter()
   .withRequestCacheEnabled(boolean value)

requestLog.enabled

此属性指示是否应将HystrixCommand执行和事件记录到HystrixRequestLog中。

Default Value true
Default Property hystrix.command.default.requestLog.enabled
Instance Property hystrix.command.HystrixCommandKey.requestLog.enabled
How to Set Instance Default
HystrixCommandProperties.Setter()
   .withRequestLogEnabled(boolean value)

Collapser Properties

以下属性控制HystrixCollapser的行为。

maxRequestsInBatch

此属性设置在触发批处理执行之前批处理中允许的最大请求数量。

Default Value Integer.MAX_VALUE
Default Property hystrix.collapser.default.maxRequestsInBatch
Instance Property hystrix.collapser.HystrixCollapserKey.maxRequestsInBatch
How to Set Instance Default
HystrixCollapserProperties.Setter()
   .withMaxRequestsInBatch(int value)

 timerDelayInMilliseconds

此属性设置在创建批处理后触发其执行的毫秒数。

Default Value 10
Default Property hystrix.collapser.default.timerDelayInMilliseconds
Instance Property hystrix.collapser.HystrixCollapserKey.timerDelayInMilliseconds
How to Set Instance Default
HystrixCollapserProperties.Setter()
   .withTimerDelayInMilliseconds(int value)

 requestCache.enabled

此属性指示是否为HystrixCollapser.execute()和HystrixCollapser.queue()调用启用请求缓存。

Default Value true
Default Property hystrix.collapser.default.requestCache.enabled
Instance Property hystrix.collapser.HystrixCollapserKey.requestCache.enabled
How to Set Instance Default
HystrixCollapserProperties.Setter()
   .withRequestCacheEnabled(boolean value)

 ThreadPool Properties

以下属性控制Hystrix命令执行的线程池的行为。请注意,这些名称与the ThreadPoolExecutor Javadoc中的名称匹配。

大多数情况下,10个线程的默认值是可以接受的(通常可以使其更小)。

为了确定是否需要更大的尺寸,计算尺寸的基本公式为:

每秒请求在高峰时健康×99延迟秒+一些喘息的空间。

请看下面的例子,看看这个公式是如何应用的。

通常的原则是保持池尽可能小,因为它是减少负载和防止资源在延迟发生时阻塞的主要工具。

Netflix API的30多个线程池设置为10,两个线程池设置为20,一个线程池设置为25。

Spring Cloud Netflix Hystrix官方文档翻译之:配置_第3张图片

 上面的图表显示了一个示例配置的依赖没有理由的第99.5个百分位,因此削减它在网络超时层短并立即重试,期望将大部分时间平均延迟,并能够完成这一切在300 ms线程超时。

如果依赖关系有正当理由有时会达到99.5%(例如延迟生成的缓存丢失),那么网络超时将被设置得比它更高,例如在325ms时重试0或1次,线程超时设置更高(350ms+)。

线程池大小为10以处理第99个百分比请求,但是当一切正常时,该线程池在任何给定时间通常只有1或2个线程处于活动状态,以服务于大多数40ms的中间调用。

当您正确地配置它时,HystrixCommand层的超时应该很少,但是如果除了网络延迟影响时间之外还有其他影响,或者在最坏的情况下,connect+read+retry+connect+read的组合仍然超过了配置的总体超时,那么就会有保护。

对于每个依赖项,配置的侵略性和每个方向上的权衡是不同的。

您可以根据性能特征的变化或发现问题时的需要实时更改配置,而无需在出现问题或错误配置时关闭整个应用程序。

coreSize

此属性设置核心线程池大小。

Default Value 10
Default Property hystrix.threadpool.default.coreSize
Instance Property hystrix.threadpool.HystrixThreadPoolKey.coreSize
How to Set Instance Default
HystrixThreadPoolProperties.Setter()
   .withCoreSize(int value)

maximumSize

在1.5.9之后补充道。此属性设置最大线程池大小。这是在不拒绝HystrixCommands的情况下可以支持的最大并发量。请注意,此设置仅在您还设置allowMaximumSizeToDivergeFromCoreSize时生效。在1.5.9之前,core 和maximum sizes总是相等的。

Default Value 10
Default Property hystrix.threadpool.default.maximumSize
Instance Property hystrix.threadpool.HystrixThreadPoolKey.maximumSize
How to Set Instance Default
HystrixThreadPoolProperties.Setter()
   .withMaximumSize(int value)

maxQueueSize

此属性设置BlockingQueue实现的最大队列大小。

如果您将其设置为-1,那么将使用SynchronousQueue ,若为正数,则将使用LinkedBlockingQueue。

 注意:此属性仅在初始化时应用,因为在不重新初始化不支持的线程执行器的情况下,队列实现无法调整或更改大小。

如果需要克服这个限制并允许队列中的动态更改,请参见queueSizeRejectionThreshold属性。

要在SynchronousQueue 和LinkedBlockingQueue之间进行更改,需要重新启动。

Default Value −1
Default Property hystrix.threadpool.default.maxQueueSize
Instance Property hystrix.threadpool.HystrixThreadPoolKey.maxQueueSize
How to Set Instance Default
HystrixThreadPoolProperties.Setter()
   .withMaxQueueSize(int value)

 queueSizeRejectionThreshold

该属性设置队列大小拒绝阈值——一个人工的最大队列大小,即使没有达到maxQueueSize,也会发生拒绝。此属性的存在是因为BlockingQueue的maxQueueSize不能动态更改,我们希望允许您动态更改影响拒绝的队列大小。

这是HystrixCommand在排队等待执行线程时使用的。

注意:如果maxQueueSize == -1,则此属性不适用。

Default Value 5
Default Property hystrix.threadpool.default.queueSizeRejectionThreshold
Instance Property hystrix.threadpool.HystrixThreadPoolKey.queueSizeRejectionThreshold
How to Set Instance Default
HystrixThreadPoolProperties.Setter()
   .withQueueSizeRejectionThreshold(int value)

 keepAliveTimeMinutes

此属性设置保持活动时间(以分钟为单位)。

在1.5.9之前,所有线程池的大小都是固定的,因为coreSize == maximumSize。在1.5.9和之后,设置allowMaximumSizeToDivergeFromCoreSize为true允许这两个值发散,以便池可以获取/释放线程。如果coreSize < maximumSize,则此属性控制线程在释放之前未使用的时间。

Default Value 1
Default Property hystrix.threadpool.default.keepAliveTimeMinutes
Instance Property hystrix.threadpool.HystrixThreadPoolKey.keepAliveTimeMinutes
How to Set Instance Default
HystrixThreadPoolProperties.Setter()
   .withKeepAliveTimeMinutes(int value)

allowMaximumSizeToDivergeFromCoreSize

在1.5.9之后补充道。此属性允许maximumSize 的配置生效。这个值可以等于或高于coreSize。设置coreSize < maximumSize将创建一个线程池,该线程池可以维持maximumSize 并发性,但在相对不活动期间将线程返回给系统。(根据keepAliveTimeInMinutes)。

Default Value false
Default Property hystrix.threadpool.default.allowMaximumSizeToDivergeFromCoreSize
Instance Property hystrix.threadpool.HystrixThreadPoolKey.allowMaximumSizeToDivergeFromCoreSize
How to Set Instance Default
HystrixThreadPoolProperties.Setter()
   .withAllowMaximumSizeToDivergeFromCoreSize(boolean value)

metrics.rollingStats.timeInMilliseconds

此属性设置统计滚动窗口的持续时间(以毫秒为单位)。这就是为线程池保留度量的时间。

窗口按这些增量分为bucket和“rolls”。

Default Value 10000
Default Property hystrix.threadpool.default.metrics.rollingStats.timeInMilliseconds
Instance Property hystrix.threadpool.HystrixThreadPoolKey.metrics.rollingStats.timeInMilliseconds
How to Set Instance Default
HystrixThreadPoolProperties.Setter()
   .withMetricsRollingStatisticalWindowInMilliseconds(int value)

metrics.rollingStats.numBuckets

此属性设置滚动统计窗口所划分的桶的数量。

注意:以下内容必须为真——“metrics.rollingStats.timeInMilliseconds % metrics.rollingStats.numBuckets == 0" -否则它将抛出一个异常。

换句话说,10000/10可以,10000/20也可以,但是10000/7不行。

Default Value 10
Possible Values Any value that metrics.rollingStats.timeInMilliseconds can be evenly divided by. The result however should be buckets measuring hundreds or thousands of milliseconds. Performance at high volume has not been tested with buckets <100ms.
Default Property hystrix.threadpool.default.metrics.rollingStats.numBuckets
Instance Property hystrix.threadpool.HystrixThreadPoolProperties.metrics.rollingStats.numBuckets
How to Set Instance Default
HystrixThreadPoolProperties.Setter()
   .withMetricsRollingStatisticalWindowBuckets(int value)

A Netflix Original Production

 Tech Blog | Twitter @NetflixOSS | Twitter @HystrixOSS | Jobs

 

你可能感兴趣的:(Spring,Cloud,Netflix)