Stratégie de limite de débit de requête
S’applique à : ✅Microsoft Fabric✅Azure Data Explorer
La stratégie de limite de taux de requêtes du groupe de charge de travail vous permet de limiter le nombre de requêtes simultanées classées dans le groupe de charge de travail, par groupe de charge de travail ou par principal.
Les limites de débit sont appliquées au niveau défini par la stratégie de mise en œuvre du taux de requête du groupe de charge de travail.
Objet de stratégie
Une stratégie de limite de taux de requête a les propriétés suivantes :
Nom | Valeurs prises en charge | Description |
---|---|---|
IsEnabled |
true , false |
Indique si la stratégie est activée ou non. |
Portée |
WorkloadGroup , Principal |
Étendue à laquelle la limite s’applique. |
LimitKind |
ConcurrentRequests , ResourceUtilization |
Type de limite du taux de requête. |
Propriétés | Conteneur de propriétés | Propriétés de la limite du taux de requête. |
Limite de débit des demandes simultanées
Une limite de débit de requête de type ConcurrentRequests
inclut la propriété suivante :
Nom | Type | Description | Valeurs prises en charge |
---|---|---|---|
MaxConcurrentRequests | int |
Nombre maximal de requêtes simultanées. | [0 , 10000 ] |
Note
- Si un groupe de charge de travail n’a pas de limite spécifiée sur les demandes simultanées maximales, il est soumis à la valeur maximale par défaut de
10000
.
Lorsqu’une requête dépasse la limite du nombre maximal de requêtes simultanées :
- L’état de la requête, tel que présenté par commandes d’informations système, sera
Throttled
. - Le message d’erreur inclut l’origine de la limitation et la capacité de qui a été dépassée.
Le tableau suivant présente quelques exemples de requêtes simultanées qui dépassent la limite maximale et le message d’erreur retourné par ces demandes :
Scénario | Message d'erreur |
---|---|
Commande limitée .create table qui a été classifiée dans le groupe de charge de travail default , qui a une limite de 80 requêtes simultanées au niveau de l’étendue du groupe de charge de travail. |
La commande de gestion a été abandonnée en raison de la limitation. Une nouvelle tentative après une interruption peut réussir. CommandType : « TableCreate », Capacité : 80, Origine : « RequestRateLimitPolicy/WorkloadGroup/default ». |
Requête limitée qui a été classifiée dans un groupe de charge de travail nommé MyWorkloadGroup , qui a une limite de 50 requêtes simultanées au niveau de l’étendue du groupe de charge de travail. |
La requête a été abandonnée en raison de la limitation. Une nouvelle tentative après une interruption peut réussir. Capacité : 50, Origine : « RequestRateLimitPolicy/WorkloadGroup/MyWorkloadGroup ». |
Requête limitée qui a été classifiée dans un groupe de charge de travail nommé MyWorkloadGroup , qui a une limite de 10 requêtes simultanées au niveau de l’étendue d’un principal. |
La requête a été abandonnée en raison de la limitation. Une nouvelle tentative après une interruption peut réussir. Capacité : 10, Origine : 'RequestRateLimitPolicy/WorkloadGroup/MyWorkloadGroup/Principal/aaduser=9e04c4f5-1abd-48d4-a3d2-9f58615b4724 ; 6ccf3fe8-6343-4be5-96c3-29a128d9570'. |
- Le code de réponse HTTP sera
429
. Le sous-code seraTooManyRequests
. - Le type d’exception est
QueryThrottledException
pour les requêtes etControlCommandThrottledException
pour les commandes de gestion.
Note
Limite du taux d’utilisation des ressources
Une limite de taux de requête de type ResourceUtilization
inclut les propriétés suivantes :
Nom | Type | Description | Valeurs prises en charge |
---|---|---|---|
ResourceKind | ResourceKind |
Ressource à limiter. Lorsque ResourceKind est TotalCpuSeconds , la limite est appliquée en fonction des rapports post-exécution de l’utilisation du processeur des requêtes terminées. Les demandes qui signalent l’utilisation de 0,005 secondes de processeur ou inférieures ne sont pas comptabilisées. La limite (MaxUtilization ) représente le nombre total de secondes processeur qui peuvent être consommées par les requêtes dans une fenêtre de temps spécifiée (TimeWindow ). Par exemple, un utilisateur exécutant des requêtes ad hoc peut avoir une limite de 1 000 secondes d’UC par heure. Si cette limite est dépassée, les requêtes suivantes sont limitées, même si elles sont démarrées simultanément, car les secondes de processeur cumulatives ont dépassé la limite définie dans la période de fenêtre glissante. |
RequestCount , TotalCpuSeconds |
MaxUtilization | long |
Maximum de la ressource qui peut être utilisée. | RequestCount : [1 , 16777215 ] ; TotalCpuSeconds : [1 , 828000 ] |
TimeWindow | timespan |
Fenêtre de temps glissante pendant laquelle la limite est appliquée. | [00:00:01 , 01:00:00 ] |
Lorsqu’une requête dépasse la limite d’utilisation des ressources :
- L’état de la requête, tel que présenté par commandes d’informations système, sera
Throttled
. - Le message d’erreur inclut l’origine de la limitation et le quota de dépassé. Par exemple:
Le tableau suivant présente quelques exemples de requêtes qui dépassent la limite du taux d’utilisation des ressources et le message d’erreur retourné par ces demandes :
Scénario | Message d'erreur |
---|---|
Requête limitée qui a été classifiée dans un groupe de charge de travail nommé Automated Requests , qui a une limite de 1 000 requêtes par heure au niveau de l’étendue d’un principal. |
La demande a été refusée en raison de limitations de quota supérieures. Ressource : 'RequestCount', Quota : '1000', TimeWindow : '01:00:00', Origin : 'RequestRateLimitPolicy/WorkloadGroup/Automated Requests/Principal/aadapp=9e04c4f5-1abd-48d4-a3d2-9f58615b4724 ; 6ccf3fe8-6343-4be5-96c3-29a128d9570'. |
Une requête limitée, qui a été classifiée dans un groupe de charge de travail nommé Automated Requests , qui a une limite de 2000 secondes processeur totales par heure à l’étendue du groupe de charge de travail. |
La demande a été refusée en raison de limitations de quota supérieures. Ressource : « TotalCpuSeconds », Quota : « 2000 », TimeWindow : « 01:00:00 », Origine : « RequestRateLimitPolicy/WorkloadGroup/Demandes automatisées ». |
- Le code de réponse HTTP sera
429
. Le sous-code seraTooManyRequests
. - Le type d’exception sera
QuotaExceededException
.
Comment la cohérence affecte les limites de débit
Avec une cohérence forte, la limite par défaut sur les requêtes simultanées maximales dépend de la référence SKU du cluster et est calculée comme suit : Cores-Per-Node x 10
. Par exemple, un cluster configuré avec des nœuds Azure D14_v2, où chaque nœud a 16 vCores, aura une limite par défaut de 16
x 10
= 160
.
Avec une cohérence faible, la limite par défaut effective sur les requêtes simultanées maximales dépend de la référence SKU du cluster et du nombre de têtes de requête, et est calculée comme suit : Cores-Per-Node x 10 x Number-Of-Query-Heads
. Par exemple, un cluster configuré avec Azure D14_v2 et 5 têtes de requête, où chaque nœud a 16 vCores, aura une limite par défaut effective de 16
x 10
x 5
= 800
.
Avec une cohérence forte, la limite par défaut sur les requêtes simultanées maximales dépend de la référence SKU de l’eventhouse et est calculée comme suit : Cores-Per-Node x 10
. Par exemple, un eventhouse configuré avec des nœuds Azure D14_v2, où chaque nœud a 16 vCores, aura une limite par défaut de 16
x 10
= 160
.
Avec une cohérence faible, la limite par défaut effective sur les requêtes simultanées maximales dépend de la référence SKU de l’eventhouse et du nombre de têtes de requête, et est calculée comme suit : Cores-Per-Node x 10 x Number-Of-Query-Heads
. Par exemple, un eventhouse configuré avec Azure D14_v2 et 5 têtes de requête, où chaque nœud a 16 vCores, aura une limite par défaut effective de 16
x 10
x 5
= 800
.
Pour plus d’informations, consultez cohérence des requêtes.
Groupe de charge de travail default
Le groupe de charge de travail default
a la stratégie suivante définie par défaut. Cette stratégie peut être modifiée.
[
{
"IsEnabled": true,
"Scope": "WorkloadGroup",
"LimitKind": "ConcurrentRequests",
"Properties": {
"MaxConcurrentRequests": < Cores-Per-Node x 10 >
}
}
]
Note
- Lorsque vous modifiez la stratégie pour le groupe de charge de travail
default
, une limite doit être définie pour les requêtes simultanées maximales.
Exemples
Les stratégies suivantes permettent d’effectuer les opérations suivantes :
- 500 demandes simultanées pour le groupe de charge de travail.
- 25 requêtes simultanées par principal.
- 50 demandes par principal par heure.
[
{
"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"
}
}
]
Les stratégies suivantes bloquent toutes les requêtes classées au groupe de charge de travail :
[
{
"IsEnabled": true,
"Scope": "WorkloadGroup",
"LimitKind": "ConcurrentRequests",
"Properties": {
"MaxConcurrentRequests": 0
}
},
]