Circuit breakers (proto)

config.cluster.v3.CircuitBreakers

[config.cluster.v3.CircuitBreakers proto]

Circuit breaking settings can be specified individually for each defined priority.

{
  "thresholds": [],
  "per_host_thresholds": []
}
thresholds

(repeated config.cluster.v3.CircuitBreakers.Thresholds) If multiple Thresholds are defined with the same RoutingPriority, the first one in the list is used. If no Thresholds is defined for a given RoutingPriority, the default values are used.

per_host_thresholds

(repeated config.cluster.v3.CircuitBreakers.Thresholds) Optional per-host limits which apply to each individual host in a cluster.

Note

currently only the max_connections field is supported for per-host limits.

If multiple per-host Thresholds are defined with the same RoutingPriority, the first one in the list is used. If no per-host Thresholds are defined for a given RoutingPriority, the cluster will not have per-host limits.

config.cluster.v3.CircuitBreakers.Thresholds

[config.cluster.v3.CircuitBreakers.Thresholds proto]

A Thresholds defines CircuitBreaker settings for a RoutingPriority.

{
  "priority": ...,
  "max_connections": {...},
  "max_pending_requests": {...},
  "max_requests": {...},
  "max_retries": {...},
  "retry_budget": {...},
  "track_remaining": ...,
  "max_connection_pools": {...}
}
priority

(config.core.v3.RoutingPriority) The RoutingPriority the specified CircuitBreaker settings apply to.

max_connections

(UInt32Value) The maximum number of connections that Envoy will make to the upstream cluster. If not specified, the default is 1024.

max_pending_requests

(UInt32Value) The maximum number of pending requests that Envoy will allow to the upstream cluster. If not specified, the default is 1024. This limit is applied as a connection limit for non-HTTP traffic.

max_requests

(UInt32Value) The maximum number of parallel requests that Envoy will make to the upstream cluster. If not specified, the default is 1024. This limit does not apply to non-HTTP traffic.

max_retries

(UInt32Value) The maximum number of parallel retries that Envoy will allow to the upstream cluster. If not specified, the default is 3.

retry_budget

(config.cluster.v3.CircuitBreakers.Thresholds.RetryBudget) Specifies a limit on concurrent retries in relation to the number of active requests. This parameter is optional.

Note

If this field is set, the retry budget will override any configured retry circuit breaker.

track_remaining

(bool) If track_remaining is true, then stats will be published that expose the number of resources remaining until the circuit breakers open. If not specified, the default is false.

Note

If a retry budget is used in lieu of the max_retries circuit breaker, the remaining retry resources remaining will not be tracked.

max_connection_pools

(UInt32Value) The maximum number of connection pools per cluster that Envoy will concurrently support at once. If not specified, the default is unlimited. Set this for clusters which create a large number of connection pools. See Circuit Breaking for more details.

config.cluster.v3.CircuitBreakers.Thresholds.RetryBudget

[config.cluster.v3.CircuitBreakers.Thresholds.RetryBudget proto]

{
  "budget_percent": {...},
  "min_retry_concurrency": {...}
}
budget_percent

(type.v3.Percent) Specifies the limit on concurrent retries as a percentage of the sum of active requests and active pending requests. For example, if there are 100 active requests and the budget_percent is set to 25, there may be 25 active retries.

This parameter is optional. Defaults to 20%.

min_retry_concurrency

(UInt32Value) Specifies the minimum retry concurrency allowed for the retry budget. The limit on the number of active retries may never go below this number.

This parameter is optional. Defaults to 3.