Partage via


Stratégie de limite de débit de requête

S’applique à : ✅Microsoft FabricAzure 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 sera TooManyRequests.
  • Le type d’exception est QueryThrottledException pour les requêtes et ControlCommandThrottledException pour les commandes de gestion.

Note

  • Si l’une des limites définies par la stratégie de capacité ou par une stratégie de limite de débit de requête est dépassée, une commande de gestion est limitée.
  • La stratégie de capacité peut limiter le taux de demandes qui relèvent d’une catégorie spécifique, comme les ingestions.

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 sera TooManyRequests.
  • 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
    }
  },
]