過載管理器 (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
- scaled
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_timeout 或 min_scale 其中之一。
- min_scale
(type.v3.Percent) 將最小持續時間設定為最大值的百分比。
必須設定 min_timeout 或 min_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_timeout 和 HttpConnectionManager.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) 緩衝區工廠的配置。