要求速率限制原則
工作負載群組的要求速率限制原則可讓您限制分類為工作負載群組、每個工作負載群組或每個主體的並行要求數目。
速率限制會在工作負載群組 要求速率限制強制執行原則所定義的層級強制執行。
原則物件
要求速率限制原則具有下列屬性:
名字 | 支援的值 | 描述 |
---|---|---|
IsEnabled |
true 、false |
指出是否啟用原則。 |
範圍 |
WorkloadGroup 、Principal |
套用限制的範圍。 |
LimitKind |
ConcurrentRequests 、ResourceUtilization |
要求速率限制的類型。 |
性能 | 屬性包 | 要求速率限制的屬性。 |
並行要求速率限制
ConcurrentRequests
類型的要求速率限制包含下列屬性:
名字 | 類型 | 描述 | 支援的值 |
---|---|---|---|
MaxConcurrentRequests | int |
並行要求的數目上限。 | [0 , 10000 ] |
注意
- 如果工作負載群組在並行要求上限上沒有指定的限制,則會受限於預設的最大值
10000
。
當要求超過並行要求數目上限時:
- 要求的狀態,如 系統資訊命令所呈現,將會
Throttled
。 - 錯誤訊息會包含節流 來源,以及超過的 容量。
下表顯示一些並行要求範例,這些要求會傳回上限和錯誤訊息:
場景 | 錯誤資訊 |
---|---|
已節流 .create table 命令,分類為 default 工作負載群組,其工作負載群組範圍有80個並行要求的限制。 |
管理命令因節流而中止。 在某些輪詢之後重試可能會成功。 CommandType: 'TableCreate', Capacity: 80, Origin: 'RequestRateLimitPolicy/WorkloadGroup/default'。 |
已分類為名為 MyWorkloadGroup 的工作負載群組的節流查詢,其限制在工作負載群組的範圍內有 50 個並行要求。 |
查詢因為節流而中止。 在某些輪詢之後重試可能會成功。 容量:50,來源:'RequestRateLimitPolicy/WorkloadGroup/MyWorkloadGroup'。 |
已分類至名為 MyWorkloadGroup 的工作負載群組的節流查詢,其限制在主體範圍有 10 個並行要求。 |
查詢因為節流而中止。 在某些輪詢之後重試可能會成功。 容量:10,來源:'RequestRateLimitPolicy/WorkloadGroup/MyWorkloadGroup/Principal/aaduser=9e04c4f5-1abd-48d4-a3d2-9f58615b4724;6ccf3fe8-6343-4be5-96c3-29a128dd9570'。 |
- HTTP 回應碼將會
429
。 子程式代碼將會TooManyRequests
。 - 系統會針對查詢
QueryThrottledException
例外狀況類型,並針對管理命令ControlCommandThrottledException
。
注意
- 如果 容量原則所定義的限制 或超過要求速率限制原則,則會節流管理命令。
- 容量原則 可能會限制屬於特定類別的要求要求速率,例如擷取。
資源使用率限制
ResourceUtilization
類型的要求速率限制包含下列屬性:
名字 | 類型 | 描述 | 支援的值 |
---|---|---|---|
ResourceKind | ResourceKind |
要限制的資源。 當 ResourceKind TotalCpuSeconds 時,會根據已完成要求的 CPU 使用率後執行報告強制執行限制。 不會計算報告 CPU 或更低秒 0.005 秒使用率的要求。 限制 (MaxUtilization ) 代表要求在指定時間範圍內耗用的總 CPU 秒數(TimeWindow )。 例如,執行臨機操作查詢的使用者每小時可能會有1000個CPU秒的限制。 如果超過此限制,即使同時啟動,後續查詢也會受到節流,因為累計 CPU 秒已超過滑動期間內定義的限制。 |
RequestCount 、TotalCpuSeconds |
MaxUtilization | long |
可使用的資源上限。 | RequestCount: [1 , 16777215 ];TotalCpuSeconds: [1 , 828000 ] |
TimeWindow | timespan |
套用限制的滑動時間範圍。 | [00:00:01 , 01:00:00 ] |
當要求超過資源使用率的限制時:
- 要求的狀態,如 系統資訊命令所呈現,將會
Throttled
。 - 錯誤訊息會包含節流 來源,以及超過的 配額。 例如:
下表顯示一些超過資源使用率限制的要求範例,以及這些要求傳回的錯誤訊息:
場景 | 錯誤資訊 |
---|---|
分類為名為 Automated Requests 之工作負載群組的節流要求,其限制為主體範圍每小時 1000 個要求。 |
要求因為超過配額限制而遭到拒絕。 資源: 'RequestCount', 配額: '1000', TimeWindow: '01:00:00', Origin: 'RequestRateLimitPolicy/WorkloadGroup/Automated Requests/Principal/aadapp=9e04c4f5-1abd-48d4-a3d2-9f58615b4724;6ccf3fe8-6343-4be5-96c3-29a128dd9570'。 |
節流要求,已分類為名為 Automated Requests 的工作負載群組,其限制為工作負載群組範圍每小時 2000 個 CPU 秒總計。 |
要求因為超過配額限制而遭到拒絕。 資源:'TotalCpuSeconds',配額:'2000',TimeWindow: '01:00:00',Origin: 'RequestRateLimitPolicy/WorkloadGroup/Automated Requests'。 |
- HTTP 回應碼將會
429
。 子程式代碼將會TooManyRequests
。 - 例外狀況類型將會
QuotaExceededException
。
一致性如何影響速率限制
使用強式一致性時,並行要求上限的預設限制取決於叢集的 SKU,並計算為:Cores-Per-Node x 10
。 例如,使用 Azure D14_v2 節點設定的叢集,其中每個節點都有 16 個虛擬核心,其預設限制為 x 16
10
= 160
。
使用弱式一致性時,最大並行要求的有效預設限制取決於叢集的SKU和查詢標頭數目,並計算為:Cores-Per-Node x 10 x Number-Of-Query-Heads
。 例如,使用 Azure D14_v2 和 5 個查詢前端設定的叢集,其中每個節點都有 16 個虛擬核心,其有效預設限制為 x 16
x 10
x 5
= 800
。
使用強式一致性時,並行要求上限的預設限制取決於 eventhouse 的 SKU,並計算為:Cores-Per-Node x 10
。 例如,使用 Azure D14_v2 節點設定的 eventhouse,其中每個節點都有 16 個虛擬核心,其預設限制為 x 16
10
= 160
。
使用弱式一致性時,最大並行要求的有效預設限制取決於 eventhouse 的 SKU 和查詢標頭數目,並計算為:Cores-Per-Node x 10 x Number-Of-Query-Heads
。 例如,使用 Azure D14_v2 和 5 個查詢前端所設定的 eventhouse,其中每個節點都有 16 個虛擬核心,會有有效的預設限制 16
x 10
x 5
= 800
。
如需詳細資訊,請參閱 查詢一致性。
default
工作負載群組
default
工作負載群組預設會定義下列原則。 您可以改變此原則。
[
{
"IsEnabled": true,
"Scope": "WorkloadGroup",
"LimitKind": "ConcurrentRequests",
"Properties": {
"MaxConcurrentRequests": < Cores-Per-Node x 10 >
}
}
]
注意
- 當您變更
default
工作負載群組的原則時,必須針對並行要求上限定義限制。
例子
下列原則最多允許:
- 工作負載群組的 500 個並行要求。
- 每個主體 25 個並行要求。
- 每小時每個主體 50 個要求。
[
{
"IsEnabled": true,
"Scope": "WorkloadGroup",
"LimitKind": "ConcurrentRequests",
"Properties": {
"MaxConcurrentRequests": 500
}
},
{
"IsEnabled": true,
"Scope": "Principal",
"LimitKind": "ConcurrentRequests",
"Properties": {
"MaxConcurrentRequests": 25
}
},
{
"IsEnabled": true,
"Scope": "Principal",
"LimitKind": "ResourceUtilization",
"Properties": {
"ResourceKind": "RequestCount",
"MaxUtilization": 50,
"TimeWindow": "01:00:00"
}
}
]
下列原則會封鎖分類至工作負載群組的所有要求:
[
{
"IsEnabled": true,
"Scope": "WorkloadGroup",
"LimitKind": "ConcurrentRequests",
"Properties": {
"MaxConcurrentRequests": 0
}
},
]