Zasady limitu szybkości żądań
Dotyczy: ✅Microsoft Fabric✅Azure Data Explorer
Zasady limitu szybkości żądań grupy obciążeń umożliwiają ograniczenie liczby współbieżnych żądań sklasyfikowanych w grupie obciążeń, na grupę obciążeń lub na jednostkę.
Limity szybkości są wymuszane na poziomie zdefiniowanym przez zasady wymuszania limitów szybkości żądań grupy obciążeń.
Obiekt zasad
Zasady limitu szybkości żądań mają następujące właściwości:
Nazwa | Obsługiwane wartości | Opis |
---|---|---|
IsEnabled |
true , false |
Wskazuje, czy zasady są włączone, czy nie. |
Zakres |
WorkloadGroup , Principal |
Zakres, do którego ma zastosowanie limit. |
LimitKind |
ConcurrentRequests , ResourceUtilization |
Rodzaj limitu szybkości żądań. |
Właściwości | Torba na właściwość | Właściwości limitu szybkości żądań. |
Limit liczby żądań współbieżnych
Limit liczby żądań rodzaju ConcurrentRequests
obejmuje następującą właściwość:
Nazwa | Typ | Opis | Obsługiwane wartości |
---|---|---|---|
MaxConcurrentRequests | int |
Maksymalna liczba współbieżnych żądań. | [0 , 10000 ] |
Nuta
- Jeśli grupa obciążeń nie ma określonego limitu dla maksymalnych współbieżnych żądań, podlega domyślnej maksymalnej wartości
10000
.
Gdy żądanie przekracza limit maksymalnej liczby współbieżnych żądań:
- Stan żądania, zgodnie z poleceniami informacji o systemie, będzie
Throttled
. - Komunikat o błędzie będzie zawierać źródła
ograniczenia przepustowości, a pojemność , która została przekroczona.
W poniższej tabeli przedstawiono kilka przykładów współbieżnych żądań, które przekraczają maksymalny limit, oraz komunikat o błędzie zwracany przez te żądania:
Scenariusz | Komunikat o błędzie |
---|---|
Ograniczone polecenie .create table , które zostało sklasyfikowane do grupy obciążenia default , która ma limit 80 równoczesnych żądań w zakresie grupy obciążeń. |
Polecenie zarządzania zostało przerwane z powodu ograniczania przepustowości. Ponowienie próby po pewnym wycofaniu może zakończyć się powodzeniem. CommandType: "TableCreate", Capacity: 80, Origin: "RequestRateLimitPolicy/WorkloadGroup/default". |
Zapytanie z ograniczeniami sklasyfikowane w grupie obciążeń o nazwie MyWorkloadGroup , które ma limit 50 współbieżnych żądań w zakresie grupy obciążeń. |
Zapytanie zostało przerwane z powodu ograniczania przepustowości. Ponowienie próby po pewnym wycofaniu może zakończyć się powodzeniem. Pojemność: 50, źródło: "RequestRateLimitPolicy/WorkloadGroup/MyWorkloadGroup". |
Zapytanie z ograniczeniami sklasyfikowane w grupie obciążeń o nazwie MyWorkloadGroup , które ma limit 10 współbieżnych żądań w zakresie podmiotu zabezpieczeń. |
Zapytanie zostało przerwane z powodu ograniczania przepustowości. Ponowienie próby po pewnym wycofaniu może zakończyć się powodzeniem. Pojemność: 10, źródło: "RequestRateLimitPolicy/WorkloadGroup/MyWorkloadGroup/Principal/aaduser=9e04c4f5-1abd-48d4-a3d2-9f58615b4724; 6ccf3fe8-6343-4be5-96c3-29a128dd9570". |
- Kod odpowiedzi HTTP będzie
429
. Kod podrzędny będzieTooManyRequests
. - Typ wyjątku będzie
QueryThrottledException
dla zapytań iControlCommandThrottledException
dla poleceń zarządzania.
Nuta
- Jeśli którykolwiek z limitów zdefiniowanych przez zasady wydajności lub przez zasady limitu liczby żądań zostanie przekroczony, polecenie zarządzania zostanie ograniczone.
- Zasady pojemności mogą ograniczyć częstotliwość żądań żądań, które należą do określonej kategorii, takich jak pozyskiwanie.
Limit szybkości wykorzystania zasobów
Limit liczby żądań rodzaju ResourceUtilization
zawiera następujące właściwości:
Nazwa | Typ | Opis | Obsługiwane wartości |
---|---|---|---|
ResourceKind | ResourceKind |
Zasób, który ma być ograniczany. Gdy ResourceKind jest TotalCpuSeconds , limit jest wymuszany na podstawie raportów po wykonaniu zakończonych żądań użycia procesora CPU. Żądania, które zgłaszają wykorzystanie procesora CPU lub niższego 0,005 sekundy, nie są liczone. Limit (MaxUtilization ) reprezentuje łączną liczbę sekund procesora CPU, które mogą być używane przez żądania w określonym przedziale czasu (TimeWindow ). Na przykład użytkownik wykonujący zapytania ad hoc może mieć limit 1000 sekund procesora CPU na godzinę. Jeśli ten limit zostanie przekroczony, kolejne zapytania będą ograniczane, nawet jeśli zostały uruchomione współbieżnie, ponieważ łączne sekundy procesora CPU przekroczyły zdefiniowany limit w okresie przesuwania okna. |
RequestCount , TotalCpuSeconds |
MaxU bez użycia | long |
Maksymalna liczba zasobów, z których można korzystać. | RequestCount: [1 , 16777215 ]; TotalCpuSeconds: [1 , 828000 ] |
TimeWindow | timespan |
Przesuwane przedziały czasu, w którym jest stosowany limit. | [00:01:00 , 1.00:00:00 ] |
Gdy żądanie przekracza limit wykorzystania zasobów:
- Stan żądania, zgodnie z poleceniami informacji o systemie, będzie
Throttled
. - Komunikat o błędzie będzie zawierać źródła ograniczenia przepustowości oraz limitu przydziału, który został przekroczony. Na przykład:
W poniższej tabeli przedstawiono kilka przykładów żądań przekraczających limit szybkości wykorzystania zasobów oraz komunikat o błędzie zwracany przez te żądania:
Scenariusz | Komunikat o błędzie |
---|---|
Żądanie ograniczone, które zostało sklasyfikowane do grupy obciążeń o nazwie Automated Requests , które ma limit 1000 żądań na godzinę w zakresie podmiotu zabezpieczeń. |
Żądanie zostało odrzucone z powodu przekroczenia ograniczeń przydziału. Zasób: "RequestCount", Quota: '1000', TimeWindow: '01:00:00', Origin: 'RequestRateLimitPolicy/WorkloadGroup/Automated Requests/Principal/aadapp=9e04c4f5-1abd-48d4-a3d2-9f58615b4724; 6ccf3fe8-6343-4be5-96c3-29a128dd9570". |
Żądanie ograniczone, które zostało sklasyfikowane do grupy obciążeń o nazwie Automated Requests , która ma limit 2000 całkowitej liczby sekund procesora CPU na godzinę w zakresie grupy obciążeń. |
Żądanie zostało odrzucone z powodu przekroczenia ograniczeń przydziału. Zasób: "TotalCpuSeconds", Limit przydziału: "2000", TimeWindow: "01:00:00", Źródło: "RequestRateLimitPolicy/WorkloadGroup/Automated Requests". |
- Kod odpowiedzi HTTP będzie
429
. Kod podrzędny będzieTooManyRequests
. - Typ wyjątku będzie
QuotaExceededException
.
Jak spójność wpływa na limity szybkości
W przypadku silnej spójności domyślny limit maksymalnej liczby współbieżnych żądań zależy od jednostki SKU klastra i jest obliczany jako: Cores-Per-Node x 10
. Na przykład klaster skonfigurowany za pomocą węzłów usługi Azure D14_v2, gdzie każdy węzeł ma 16 rdzeni wirtualnych, będzie miał domyślny limit 16
x 10
= 160
.
Ze słabą spójnością obowiązująca domyślna granica maksymalnej liczby współbieżnych żądań zależy od jednostki SKU klastra i liczby głów zapytań i jest obliczana jako: Cores-Per-Node x 10 x Number-Of-Query-Heads
. Na przykład klaster skonfigurowany za pomocą usługi Azure D14_v2 i 5 głowic zapytań, w którym każdy węzeł ma 16 rdzeni wirtualnych, będzie miał efektywny domyślny limit 16
x 10
x 5
= 800
.
W przypadku silnej spójności domyślny limit maksymalnej liczby współbieżnych żądań zależy od jednostki SKU magazynu zdarzeń i jest obliczany jako: Cores-Per-Node x 10
. Na przykład magazyn zdarzeń skonfigurowany za pomocą węzłów usługi Azure D14_v2, gdzie każdy węzeł ma 16 rdzeni wirtualnych, będzie miał domyślny limit 16
x 10
= 160
.
Ze słabą spójnością obowiązująca domyślna granica maksymalnej liczby współbieżnych żądań zależy od jednostki SKU magazynu zdarzeń i liczby głów zapytań i jest obliczana jako: Cores-Per-Node x 10 x Number-Of-Query-Heads
. Na przykład magazyn zdarzeń skonfigurowany za pomocą usługi Azure D14_v2 i 5 szefów zapytań, gdzie każdy węzeł ma 16 rdzeni wirtualnych, będzie miał obowiązujący domyślny limit 16
x 10
x 5
= 800
.
Aby uzyskać więcej informacji, zobacz Spójność zapytań.
Grupa obciążeń default
Grupa obciążeń default
ma domyślnie zdefiniowane następujące zasady. Te zasady można zmienić.
[
{
"IsEnabled": true,
"Scope": "WorkloadGroup",
"LimitKind": "ConcurrentRequests",
"Properties": {
"MaxConcurrentRequests": < Cores-Per-Node x 10 >
}
}
]
Nuta
- W przypadku zmiany zasad dla grupy obciążenia
default
należy zdefiniować limit dla maksymalnej liczby współbieżnych żądań.
Przykłady
Następujące zasady umożliwiają wykonywanie następujących czynności:
- 500 równoczesnych żądań dla grupy obciążeń.
- 25 równoczesnych żądań na jednostkę.
- 50 żądań na jednostkę na godzinę.
[
{
"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"
}
}
]
Następujące zasady blokują wszystkie żądania sklasyfikowane w grupie obciążeń:
[
{
"IsEnabled": true,
"Scope": "WorkloadGroup",
"LimitKind": "ConcurrentRequests",
"Properties": {
"MaxConcurrentRequests": 0
}
},
]