過載管理器 (proto)

過載管理器提供了一個可擴展的框架,用於保護 Envoy 實例免受各種資源(記憶體、CPU、檔案描述符等)的過載。它會監控一組可配置的資源,並在與這些資源相關的觸發器觸發時通知已註冊的監聽器。

config.overload.v3.ResourceMonitor

[config.overload.v3.ResourceMonitor proto]

{
  "name": ...,
  "typed_config": {...}
}
name

(字串必要) 要實例化的資源監視器的名稱。必須與已註冊的資源監視器類型相符。請參閱 下方 typed_config 中列出的擴充功能 以取得預設可用資源監視器清單。

typed_config

(Any) 要實例化的資源監視器的組態。

config.overload.v3.ThresholdTrigger

[config.overload.v3.ThresholdTrigger proto]

{
  "value": ...
}
value

(雙精度浮點數) 如果資源壓力大於或等於此值,觸發器將進入飽和狀態。

config.overload.v3.ScaledTrigger

[config.overload.v3.ScaledTrigger proto]

{
  "scaling_threshold": ...,
  "saturation_threshold": ...
}
scaling_threshold

(雙精度浮點數) 如果資源壓力大於此值,觸發器將處於 scaling 狀態,值為 (pressure - scaling_threshold) / (saturation_threshold - scaling_threshold)

saturation_threshold

(雙精度浮點數) 如果資源壓力大於此值,觸發器將進入飽和狀態。

config.overload.v3.Trigger

[config.overload.v3.Trigger proto]

{
  "name": ...,
  "threshold": {...},
  "scaled": {...}
}
name

(字串必要) 此觸發器所針對的資源名稱。

threshold

(config.overload.v3.ThresholdTrigger)

必須設定 thresholdscaled 其中之一。

scaled

(config.overload.v3.ScaledTrigger)

必須設定 thresholdscaled 其中之一。

config.overload.v3.ScaleTimersOverloadActionConfig

[config.overload.v3.ScaleTimersOverloadActionConfig proto]

「envoy.overload_actions.reduce_timeouts」動作的類型組態。請參閱 文件 以取得如何使用不同逾時和最小值設定動作的範例。

{
  "timer_scale_factors": []
}
timer_scale_factors

(重複 config.overload.v3.ScaleTimersOverloadActionConfig.ScaleTimer必要) 要套用的一組計時器縮放規則。

config.overload.v3.ScaleTimersOverloadActionConfig.ScaleTimer

[config.overload.v3.ScaleTimersOverloadActionConfig.ScaleTimer proto]

{
  "timer": ...,
  "min_timeout": {...},
  "min_scale": {...}
}
timer

(config.overload.v3.ScaleTimersOverloadActionConfig.TimerType) 此最小值適用的計時器類型。

min_timeout

(持續時間) 將最小持續時間設定為絕對值。

必須設定 min_timeoutmin_scale 其中之一。

min_scale

(type.v3.Percent) 將最小持續時間設定為最大值的百分比。

必須設定 min_timeoutmin_scale 其中之一。

列舉 config.overload.v3.ScaleTimersOverloadActionConfig.TimerType

[config.overload.v3.ScaleTimersOverloadActionConfig.TimerType proto]

UNSPECIFIED

(預設) ⁣不支援的值;使用者必須明確指定他們想要縮放的計時器。

HTTP_DOWNSTREAM_CONNECTION_IDLE

⁣調整下游 HTTP 連線的閒置計時器,該計時器會在沒有作用中串流時生效。這會影響 HttpConnectionManager.common_http_protocol_options.idle_timeout 的值

HTTP_DOWNSTREAM_STREAM_IDLE

⁣調整下游用戶端起始的 HTTP 串流的閒置計時器。這會影響 RouteAction.idle_timeoutHttpConnectionManager.stream_idle_timeout 的值

TRANSPORT_SOCKET_CONNECT

⁣調整下游用戶端完成傳輸層級協商的計時器,之後連線將會關閉。這會影響 FilterChain.transport_socket_connect_timeout 的值。

HTTP_DOWNSTREAM_CONNECTION_MAX

⁣調整下游 HTTP 連線的最大連線持續時間計時器。這會影響 HttpConnectionManager.common_http_protocol_options.max_connection_duration 的值。

config.overload.v3.OverloadAction

[config.overload.v3.OverloadAction proto]

{
  "name": ...,
  "triggers": [],
  "typed_config": {...}
}
name

(字串必要) 過載動作的名稱。這只是一個知名的字串,監聽器可以使用它來註冊回呼。自訂過載動作應使用反向 DNS 命名,以確保唯一性。

triggers

(重複 config.overload.v3.Trigger必要) 此動作的一組觸發器。動作的狀態是所有觸發器的最大狀態,可以是 0 到 1 之間的純量值或飽和值。當過載動作變更狀態時,會通知監聽器。過載管理器動作只能針對給定的資源有一個觸發器,例如,Trigger.name 在此清單中必須是唯一的。

typed_config

(Any) 要實例化的動作的組態。

config.overload.v3.LoadShedPoint

[config.overload.v3.LoadShedPoint proto]

連線或要求生命週期中的一個點,該點會提供在該點對於目前實體是否要卸載負載的背景資訊。

{
  "name": ...,
  "triggers": []
}
name

(字串必要) 這只是 LoadShedPoint 的一個知名字串。部署特定的 LoadShedPoints (例如在自訂擴充功能中) 應以公司/部署名稱為前綴,以避免與任何開放原始碼 LoadShedPoints 發生衝突。

triggers

(重複 config.overload.v3.Trigger必要) 此 LoadShedPoint 的一組觸發器。LoadShedPoint 將使用所有觸發器的最大狀態,可以是 0 到 1 之間的純量值或飽和值。LoadShedPoint 只能針對給定的資源有一個觸發器,例如 Trigger.name 在此清單中必須是唯一的。

config.overload.v3.BufferFactoryConfig

[config.overload.v3.BufferFactoryConfig proto]

WatermarkBuffer 工廠應追蹤哪些帳戶的組態。

{
  "minimum_account_to_track_power_of_two": ...
}
minimum_account_to_track_power_of_two

(uint32) Envoy 開始追蹤帳戶的最小二次方。

Envoy 有 8 個二次方區段,從下方提供的指數開始。具體而言,第一個區段包含使用 [2^minimum_account_to_track_power_of_two, 2^(minimum_account_to_track_power_of_two + 1)) 位元組的串流的帳戶。而第 8 個區段則追蹤 >= 128 * 2^minimum_account_to_track_power_of_two 的帳戶。

最大值為 56,因為我們使用 uint64_t 來計算位元組,而這也是最後一個會使用 8 個區段的值。實際上,我們不希望 Proxy 持有 2^56 個位元組。

如果省略,Envoy 應不執行任何追蹤。

config.overload.v3.OverloadManager

[config.overload.v3.OverloadManager proto]

{
  "refresh_interval": {...},
  "resource_monitors": [],
  "actions": [],
  "loadshed_points": [],
  "buffer_factory_config": {...}
}
refresh_interval

(持續時間) 重新整理資源使用情況的間隔。

resource_monitors

(重複 config.overload.v3.ResourceMonitor必要) 要監控的資源集。

actions

(repeated config.overload.v3.OverloadAction) 超載行為的集合。

loadshed_points

(repeated config.overload.v3.LoadShedPoint) 負載卸載點的集合。

buffer_factory_config

(config.overload.v3.BufferFactoryConfig) 緩衝區工廠的配置。