程序员L札记

V1

2022/06/06阅读:14主题:橙心

Hystrix配置中文文档

介绍

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

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

每个属性有四个优先级:

1. 来自代码的全局默认值

如果以下 3 项均未设置,则这是默认设置。 全局默认值在下表中显示为“默认值”。

2.动态全局默认属性

您可以使用属性更改全局默认值。 全局默认属性名称在下表中显示为“默认属性”。

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”。

例子:

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

将属性的HystrixCommandKey部分替换为目标HystrixCommand的HystrixCommandKey.name()值。

例如,如果将键命名为“SubscriberGetAccount”,则属性名称为:

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

Command Properties

以下属性控制HystrixCommand的行为:

Execution

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

execution.isolation.strategy

此属性指示 HystrixCommand.run() 执行的隔离策略,以下两种选择之一:

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

线程或信号量

默认和推荐设置是使用线程隔离 (THREAD) 运行 HystrixCommand,使用信号量隔离 (SEMAPHORE) 运行 HystrixObservableCommand。

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

对于HystrixCommand,通常只有在调用量非常大(每实例每秒几百个),以至于单独线程的开销太高时才应该使用信号量隔离;这通常只适用于非网络调用。

Netflix API有100多个命令运行在40多个线程池中,只有少数命令不在线程中运行——那些从内存缓存中获取元数据的命令,或者façades到线程隔离的命令(请参阅“Primary + Secondary with Fallback” pattern获取更多信息)。

有关此决定的更多信息,请参阅隔离的工作原理

默认值

THREAD (see ExecutionIsolationStrategy.THREAD)

可能的值

THREAD, SEMAPHORE

默认属性

hystrix.command.default.execution.isolation.strategy

实例属性

hystrix.command.HystrixCommandKey.execution.isolation.strategy

如何设置实例默认值

// to use thread isolation
HystrixCommandProperties.Setter()
   .withExecutionIsolationStrategy(ExecutionIsolationStrategy.THREAD)
// to use semaphore isolation
HystrixCommandProperties.Setter()
   .withExecutionIsolationStrategy(ExecutionIsolationStrategy.SEMAPHORE)

execution.isolation.thread.timeoutInMilliseconds

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

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

默认值

1000

默认属性

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds

实例属性

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

如何设置实例默认值

HystrixCommandProperties.Setter()
   .withExecutionTimeoutInMilliseconds(int value)

execution.timeout.enabled

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

默认值

true

默认属性

hystrix.command.default.execution.timeout.enabled

实例属性

hystrix.command.HystrixCommandKey.execution.timeout.enabled

如何设置实例默认值

HystrixCommandProperties.Setter()
   .withExecutionTimeoutEnabled(boolean value)

execution.isolation.thread.interruptOnTimeout

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

默认值

true

默认属性

hystrix.command.default.execution.isolation.thread.interruptOnTimeout

实例属性

hystrix.command.HystrixCommandKey.execution.isolation.thread.interruptOnTimeout

如何设置实例默认值

HystrixCommandProperties.Setter()
   .withExecutionIsolationThreadInterruptOnTimeout(boolean value)

execution.isolation.thread.interruptOnCancel

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

默认值

false

默认属性

hystrix.command.default.execution.isolation.thread.interruptOnCancel

实例属性

hystrix.command.HystrixCommandKey.execution.isolation.thread.interruptOnCancel

如何设置实例默认值

HystrixCommandProperties.Setter()
   .withExecutionIsolationThreadInterruptOnCancel(boolean value)

execution.isolation.semaphore.maxConcurrentRequests

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

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

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

例如,单个实例上的 5000rps 用于内存中查找并收集指标已被视为仅适用于 2 的信号量。

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

默认值

10

默认属性

hystrix.command.default.execution.isolation.semaphore.maxConcurrentRequests

实例属性

hystrix.command.HystrixCommandKey.execution.isolation.semaphore.maxConcurrentRequests

如何设置实例默认值

HystrixCommandProperties.Setter()
   .withExecutionIsolationSemaphoreMaxConcurrentRequests(int value)

Fallback

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

fallback.isolation.semaphore.maxConcurrentRequests

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

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

默认值

10

默认属性

hystrix.command.default.fallback.isolation.semaphore.maxConcurrentRequests

实例属性

hystrix.command.HystrixCommandKey.fallback.isolation.semaphore.maxConcurrentRequests

如何设置实例默认值

HystrixCommandProperties.Setter()
   .withFallbackIsolationSemaphoreMaxConcurrentRequests(int value)

fallback.enabled

Since: 1.2

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

默认值

true

默认属性

hystrix.command.default.fallback.enabled

实例属性

hystrix.command.HystrixCommandKey.fallback.enabled

如何设置实例默认值

HystrixCommandProperties.Setter()
   .withFallbackEnabled(boolean value)

Circuit Breaker

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

circuitBreaker.enabled

此属性确定是否使用断路器来跟踪运行状况并在其跳闸时用于短路请求。

默认值

true

默认属性

hystrix.command.default.circuitBreaker.enabled

实例属性

hystrix.command.HystrixCommandKey.circuitBreaker.enabled

如何设置实例默认值

HystrixCommandProperties.Setter()
   .withCircuitBreakerEnabled(boolean value)

circuitBreaker.requestVolumeThreshold

此属性设置滚动窗口中将使电路跳闸的最小请求数。

例如,如果值为 20,那么如果在滚动窗口(例如 10 秒的窗口)中仅接收到 19 个请求,即使所有 19 个请求都失败,电路也不会跳闸。

默认值

20

默认属性

hystrix.command.default.circuitBreaker.requestVolumeThreshold

实例属性

hystrix.command.HystrixCommandKey.circuitBreaker.requestVolumeThreshold

如何设置实例默认值

HystrixCommandProperties.Setter()
   .withCircuitBreakerRequestVolumeThreshold(int value)

circuitBreaker.sleepWindowInMilliseconds

此属性设置在电路跳闸后拒绝请求的时间量, 在此值的时间内,hystrix会拒绝新的请求,只有过了这个时间,断路器会进入半开状态。即:熔断多少秒后去尝试请求。

默认值

5000

默认属性

hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds

实例属性

hystrix.command.HystrixCommandKey.circuitBreaker.sleepWindowInMilliseconds

如何设置实例默认值

HystrixCommandProperties.Setter()
   .withCircuitBreakerSleepWindowInMilliseconds(int value)

circuitBreaker.errorThresholdPercentage

设置失败百分比的阈值。如果失败比率超过这个值,则断路器跳闸并且进入fallback逻辑。 即:失败率达到多少百分比后熔断。主要根据依赖重要性进行调整。

默认值

50

默认属性

hystrix.command.default.circuitBreaker.errorThresholdPercentage

实例属性

hystrix.command.HystrixCommandKey.circuitBreaker.errorThresholdPercentage

如何设置实例默认值

HystrixCommandProperties.Setter()
   .withCircuitBreakerErrorThresholdPercentage(int value)

circuitBreaker.forceOpen

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

此属性优先于 circuitBreaker.forceClosed。

默认值

false

默认属性

hystrix.command.default.circuitBreaker.forceOpen

实例属性

hystrix.command.HystrixCommandKey.circuitBreaker.forceOpen

如何设置实例默认值

HystrixCommandProperties.Setter()
   .withCircuitBreakerForceOpen(boolean value)

circuitBreaker.forceClosed

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

circuitBreaker.forceOpen 属性具有优先权,因此如果将其设置为 true,则此属性不执行任何操作。

默认值

false

默认属性

hystrix.command.default.circuitBreaker.forceClose

实例属性

hystrix.command.HystrixCommandKey.circuitBreaker.forceClosed

如何设置实例默认值

HystrixCommandProperties.Setter()
   .withCircuitBreakerForceClosed(boolean value)

Metrics

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

metrics.rollingStats.timeInMilliseconds

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

从 1.4.12 开始,该属性仅影响初始指标创建,启动后对该属性所做的调整将不会生效。这避免了指标数据丢失,并允许优化指标收集。

窗口按这些增量分为桶和“卷”。

如果此值为10s(10000),将窗口分成10个桶,每个桶表示1s时间,下图表示它如何滚动新存储桶和旧存储桶:

默认值

10000

默认属性

hystrix.command.default.metrics.rollingStats.timeInMilliseconds

实例属性

hystrix.command.HystrixCommandKey.metrics.rollingStats.timeInMilliseconds

如何设置实例默认值

HystrixCommandProperties.Setter()
   .withMetricsRollingStatisticalWindowInMilliseconds(int value)

metrics.rollingStats.numBuckets

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

注意:以下必须为真——“metrics.rollingStats.timeInMilliseconds % metrics.rollingStats.numBuckets == 0”——否则会抛出异常。

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

从 1.4.12 开始,该属性仅影响初始指标创建,启动后对该属性所做的调整将不会生效。这避免了指标数据丢失,并允许优化指标收集。

默认值

10

可能的值

metrics.rollingStats.timeInMilliseconds 可以除以的任何值。然而,结果应该是测量数百或数千毫秒的存储桶。尚未使用 <100 毫秒的存储桶测试高性能。

也就是说,在高并发的环境里,每个桶的时间长度建议大于100ms。

默认属性

hystrix.command.default.metrics.rollingStats.numBuckets

实例属性

hystrix.command.HystrixCommandKey.metrics.rollingStats.numBuckets

如何设置实例默认值

HystrixCommandProperties.Setter()
   .withMetricsRollingStatisticalWindowBuckets(int value)

metrics.rollingPercentile.enabled

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

默认值

true

默认属性

hystrix.command.default.metrics.rollingPercentile.enabled

实例属性

hystrix.command.HystrixCommandKey.metrics.rollingPercentile.enabled

如何设置实例默认值

HystrixCommandProperties.Setter()
   .withMetricsRollingPercentileEnabled(boolean value)

metrics.rollingPercentile.timeInMilliseconds

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

窗口按这些增量分为桶和“卷”。

从 1.4.12 开始,该属性仅影响初始指标创建,启动后对该属性所做的调整将不会生效。这避免了指标数据丢失,并允许优化指标收集

默认值

60000

默认属性

hystrix.command.default.metrics.rollingPercentile.timeInMilliseconds

实例属性

hystrix.command.HystrixCommandKey.metrics.rollingPercentile.timeInMilliseconds

如何设置实例默认值

HystrixCommandProperties.Setter()
   .withMetricsRollingPercentileWindowInMilliseconds(int value)

metrics.rollingPercentile.numBuckets

此属性设置 rollingPercentile 窗口将分成的桶数。

注意:以下必须为真——“metrics.rollingPercentile.timeInMilliseconds % metrics.rollingPercentile.numBuckets == 0”——否则会抛出异常。

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

从 1.4.12 开始,该属性仅影响初始指标创建,启动后对该属性所做的调整将不会生效。这避免了指标数据丢失,并允许优化指标收集。

默认值

6

可能的值

metrics.rollingPercentile.timeInMilliseconds 可以除以的任何值。然而,结果应该是测量数千毫秒的存储桶。尚未使用 <1000 毫秒的存储桶测试大容量性能。

默认属性

hystrix.command.default.metrics.rollingPercentile.numBuckets

实例属性

hystrix.command.HystrixCommandKey.metrics.rollingPercentile.numBuckets

如何设置实例默认值

HystrixCommandProperties.Setter()
   .withMetricsRollingPercentileWindowBuckets(int value)

metrics.rollingPercentile.bucketSize

此属性设置每个存储桶保留的最大执行次数。如果在此期间发生更多执行,它们将环绕并在存储桶的开头开始覆盖。

例如,如果存储桶大小设置为 100 并表示 10 秒的存储桶窗口,但在此期间发生了 500 次执行,则只有最后 100 次执行将保留在该 10 秒存储桶中。

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

从 1.4.12 开始,该属性仅影响初始指标创建,启动后对该属性所做的调整将不会生效。这避免了指标数据丢失,并允许优化指标收集。

默认值

100

默认属性

hystrix.command.default.metrics.rollingPercentile.bucketSize

实例属性

hystrix.command.HystrixCommandKey.metrics.rollingPercentile.bucketSize

如何设置实例默认值

HystrixCommandProperties.Setter()
   .withMetricsRollingPercentileBucketSize(int value)

metrics.healthSnapshot.intervalInMilliseconds

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

在大容量电路中,连续的误差百分比计算可能成为CPU密集型,因此这个属性允许您控制它的计算频率。

默认值

500

默认属性

hystrix.command.default.metrics.healthSnapshot.intervalInMilliseconds

实例属性

hystrix.command.HystrixCommandKey.metrics.healthSnapshot.intervalInMilliseconds

如何设置实例默认值

HystrixCommandProperties.Setter()
   .withMetricsHealthSnapshotIntervalInMilliseconds(int value)

Request Context

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

requestCache.enabled

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

默认值

true

默认属性

hystrix.command.default.requestCache.enabled

实例属性

hystrix.command.HystrixCommandKey.requestCache.enabled

如何设置实例默认值

HystrixCommandProperties.Setter()
   .withRequestCacheEnabled(boolean value)

requestLog.enabled

该属性指示是否将HystrixCommand执行和事件记录到HystrixRequestLog

默认值

true

默认属性

hystrix.command.default.requestLog.enabled

实例属性

hystrix.command.HystrixCommandKey.requestLog.enabled

如何设置实例默认值

HystrixCommandProperties.Setter()
   .withRequestLogEnabled(boolean value)

Collapser Properties

下面的属性控制HystrixCollapser的行为。

maxRequestsInBatch

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

默认值

Integer.MAX_VALUE

默认属性

hystrix.collapser.default.maxRequestsInBatch

实例属性

hystrix.collapser.HystrixCollapserKey.maxRequestsInBatch

如何设置实例默认值

HystrixCollapserProperties.Setter()
   .withMaxRequestsInBatch(int value)

timerDelayInMilliseconds

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

默认值

10

默认属性

hystrix.collapser.default.timerDelayInMilliseconds

实例属性

hystrix.collapser.HystrixCollapserKey.timerDelayInMilliseconds

如何设置实例默认值

HystrixCollapserProperties.Setter()
   .withTimerDelayInMilliseconds(int value)

requestCache.enabled

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

默认值

true

默认属性

hystrix.collapser.default.requestCache.enabled

实例属性

hystrix.collapser.HystrixCollapserKey.requestCache.enabled

如何设置实例默认值

HystrixCollapserProperties.Setter()
   .withRequestCacheEnabled(boolean value)

ThreadPool Properties

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

大多数情况下,默认值 10 个线程就可以了(通常可以做得更小)。

要确定是否需要更大,计算大小的基本公式是:

健康时的峰值每秒请求数 × 99% 延迟(以秒为单位)+ 一些喘息空间

请参阅下面的示例,了解如何将这个公式付诸实践。

一般原则是使池尽可能小,因为它是减轻负载并防止出现延迟时资源阻塞的主要工具。

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

上图显示了一个示例配置,其中依赖项没有理由达到第 99.5 个百分位,因此它在网络超时层将其缩短,并立即重试,期望它在大多数情况下会获得中值延迟,并且会能够在 300 毫秒线程超时内完成这一切。

如果依赖项有正当理由有时会达到第 99.5 个百分位(例如延迟生成的缓存未命中),则网络超时将设置为高于它,例如在 325ms 时重试 0 或 1 次,并且线程超时设置为更高(350ms+ )。

线程池的大小为 10 以处理 99% 的突发请求,但是当一切正常时,该线程池通常在任何给定时间只有 1 或 2 个线程处于活动状态,主要服务于 40 毫秒的中值调用。

当您正确配置它时,HystrixCommand 层的超时应该很少见,但是如果网络延迟以外的其他因素影响时间,或者在最坏的情况下仍然是连接+读取+重试+连接+读取的组合,则可以提供保护超过配置的总超时。

每个方向的配置和权衡的积极性对于每个依赖项都是不同的。

当性能特征发生变化或发现问题时,您可以根据需要实时更改配置,如果出现问题或配置错误,这一切都不会导致整个应用程序瘫痪。

coreSize

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

默认值

10

默认属性

hystrix.threadpool.default.coreSize

实例属性

hystrix.threadpool.HystrixThreadPoolKey.coreSize

如何设置实例默认值

HystrixThreadPoolProperties.Setter()
   .withCoreSize(int value)

maximumSize

在 1.5.9 中添加。此属性设置最大线程池大小。这是在不开始拒绝 HystrixCommand 的情况下可以支持的最大并发量。请注意,此设置仅在您还设置了 allowMaximumSizeToDivergeFromCoreSize 时才会生效。在 1.5.9 之前,核心大小和最大大小总是相等的。

默认值

10

默认属性

hystrix.threadpool.default.maximumSize

实例属性

hystrix.threadpool.HystrixThreadPoolKey.maximumSize

如何设置实例默认值

HystrixThreadPoolProperties.Setter()
   .withMaximumSize(int value)

maxQueueSize

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

如果将此设置为 -1,则将使用 SynchronousQueue,一个正值将使用 LinkedBlockingQueue

注意:此属性仅适用于初始化时,因为队列实现不能在不重新初始化线程执行器的情况下进行调整或更改,这是不受支持的。

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

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

默认值

-1

默认属性

hystrix.threadpool.default.maxQueueSize

实例属性

hystrix.threadpool.HystrixThreadPoolKey.maxQueueSize

如何设置实例默认值

HystrixThreadPoolProperties.Setter()
   .withMaxQueueSize(int value)

queueSizeRejectionThreshold

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

在线程排队等待执行时被HystrixCommand使用

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

默认值

5

默认属性

hystrix.threadpool.default.queueSizeRejectionThreshold

实例属性

hystrix.threadpool.HystrixThreadPoolKey.queueSizeRejectionThreshold

如何设置实例默认值

HystrixThreadPoolProperties.Setter()
   .withQueueSizeRejectionThreshold(int value)

keepAliveTimeMinutes

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

在 1.5.9 之前,所有线程池都是固定大小的,因为 coreSize == maximumSize。在 1.5.9 及之后的版本中,将 allowMaximumSizeToDivergeFromCoreSize 设置为 true 允许这 2 个值发散,以便池可以获取/释放线程。如果 coreSize < maximumSize,则此属性控制线程在被释放之前将闲置多长时间。

默认值

1

默认属性

hystrix.threadpool.default.keepAliveTimeMinutes

实例属性

hystrix.threadpool.HystrixThreadPoolKey.keepAliveTimeMinutes

如何设置实例默认值

HystrixThreadPoolProperties.Setter()
   .withKeepAliveTimeMinutes(int value)

allowMaximumSizeToDivergeFromCoreSize

在 1.5.9 中添加。该属性允许maximumSize的配置生效。然后,该值可以等于或高于 coreSize。设置 coreSize < maximumSize 会创建一个线程池,该线程池可以维持 maximumSize 并发,但会在相对不活动期间将线程返回给系统。 (以 keepAliveTimeInMinutes 为准)

默认值

false

默认属性

hystrix.threadpool.default.allowMaximumSizeToDivergeFromCoreSize

实例属性

hystrix.threadpool.HystrixThreadPoolKey.allowMaximumSizeToDivergeFromCoreSize

如何设置实例默认值

HystrixThreadPoolProperties.Setter()
   .withAllowMaximumSizeToDivergeFromCoreSize(boolean value)

metrics.rollingStats.timeInMilliseconds

此属性设置统计滚动窗口的持续时间,以毫秒为单位。这是为线程池保留指标的时间。

窗口按这些增量分为桶和“卷”。

默认值

10000

默认属性

hystrix.threadpool.default.metrics.rollingStats.timeInMilliseconds

实例属性

hystrix.threadpool.HystrixThreadPoolKey.metrics.rollingStats.timeInMilliseconds

如何设置实例默认值

HystrixThreadPoolProperties.Setter()
   .withMetricsRollingStatisticalWindowInMilliseconds(int value)

metrics.rollingStats.numBuckets

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

注意:以下必须为真——“metrics.rollingStats.timeInMilliseconds % metrics.rollingStats.numBuckets == 0”——否则会抛出异常。

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

默认值

10

可能的值

metrics.rollingStats.timeInMilliseconds 可以整除的任何值。然而,结果应该是测量数百或数千毫秒的存储桶。尚未使用 <100 毫秒的存储桶测试大容量性能。

默认属性

hystrix.threadpool.default.metrics.rollingStats.numBuckets

实例属性

hystrix.threadpool.HystrixThreadPoolProperties.metrics.rollingStats.numBuckets

如何设置实例默认值

HystrixThreadPoolProperties.Setter()
   .withMetricsRollingStatisticalWindowBuckets(int value)

欢迎关注我的公众号:程序员L札记

分类:

后端

标签:

Java

作者介绍

程序员L札记
V1