Adaptive Concurrency

This documentation is for the Envoy v3 API.

As of Envoy v1.18 the v2 API has been removed and is no longer supported.

If you are upgrading from v2 API config you may wish to view the v2 API documentation:

config/filter/http/adaptive_concurrency/v2alpha/adaptive_concurrency.proto

This extension may be referenced by the qualified name envoy.filters.http.adaptive_concurrency

Note

This extension is functional but has not had substantial production burn time, use only with this caveat.

This extension has an unknown security posture and should only be used in deployments where both the downstream and upstream are trusted.

Tip

This extension extends and can be used with the following extension category:

Adaptive Concurrency Control configuration overview.

extensions.filters.http.adaptive_concurrency.v3.GradientControllerConfig

[extensions.filters.http.adaptive_concurrency.v3.GradientControllerConfig proto]

Configuration parameters for the gradient controller.

  1. {
  2. "sample_aggregate_percentile": "{...}",
  3. "concurrency_limit_params": "{...}",
  4. "min_rtt_calc_params": "{...}"
  5. }

sample_aggregate_percentile

(type.v3.Percent) The percentile to use when summarizing aggregated samples. Defaults to p50.

concurrency_limit_params

(extensions.filters.http.adaptive_concurrency.v3.GradientControllerConfig.ConcurrencyLimitCalculationParams, REQUIRED)

min_rtt_calc_params

(extensions.filters.http.adaptive_concurrency.v3.GradientControllerConfig.MinimumRTTCalculationParams, REQUIRED)

extensions.filters.http.adaptive_concurrency.v3.GradientControllerConfig.ConcurrencyLimitCalculationParams

[extensions.filters.http.adaptive_concurrency.v3.GradientControllerConfig.ConcurrencyLimitCalculationParams proto]

Parameters controlling the periodic recalculation of the concurrency limit from sampled request latencies.

  1. {
  2. "max_concurrency_limit": "{...}",
  3. "concurrency_update_interval": "{...}"
  4. }

max_concurrency_limit

(UInt32Value) The allowed upper-bound on the calculated concurrency limit. Defaults to 1000.

concurrency_update_interval

(Duration, REQUIRED) The period of time samples are taken to recalculate the concurrency limit.

extensions.filters.http.adaptive_concurrency.v3.GradientControllerConfig.MinimumRTTCalculationParams

[extensions.filters.http.adaptive_concurrency.v3.GradientControllerConfig.MinimumRTTCalculationParams proto]

Parameters controlling the periodic minRTT recalculation.

  1. {
  2. "interval": "{...}",
  3. "request_count": "{...}",
  4. "jitter": "{...}",
  5. "min_concurrency": "{...}",
  6. "buffer": "{...}"
  7. }

interval

(Duration, REQUIRED) The time interval between recalculating the minimum request round-trip time. Has to be positive.

request_count

(UInt32Value) The number of requests to aggregate/sample during the minRTT recalculation window before updating. Defaults to 50.

jitter

(type.v3.Percent) Randomized time delta that will be introduced to the start of the minRTT calculation window. This is represented as a percentage of the interval duration. Defaults to 15%.

Example: If the interval is 10s and the jitter is 15%, the next window will begin somewhere in the range (10s - 11.5s).

min_concurrency

(UInt32Value) The concurrency limit set while measuring the minRTT. Defaults to 3.

buffer

(type.v3.Percent) Amount added to the measured minRTT to add stability to the concurrency limit during natural variability in latency. This is expressed as a percentage of the measured value and can be adjusted to allow more or less tolerance to the sampled latency values.

Defaults to 25%.

extensions.filters.http.adaptive_concurrency.v3.AdaptiveConcurrency

[extensions.filters.http.adaptive_concurrency.v3.AdaptiveConcurrency proto]

  1. {
  2. "gradient_controller_config": "{...}",
  3. "enabled": "{...}"
  4. }

gradient_controller_config

(extensions.filters.http.adaptive_concurrency.v3.GradientControllerConfig, REQUIRED) Gradient concurrency control will be used.

enabled

(config.core.v3.RuntimeFeatureFlag) If set to false, the adaptive concurrency filter will operate as a pass-through filter. If the message is unspecified, the filter will be enabled.