Stratégie de limites des demandes
La stratégie de limitation des demandes d’un groupe de charges de travail permet de limiter les ressources utilisées par la demande pendant son exécution.
Par objet de stratégie
Chaque limite se compose des éléments suivants :
- Typé :
Value
valeur de la limite. IsRelaxable
- valeur booléenne qui définit si la limite peut être assouplie par l’appelant, dans le cadre des propriétés de la requête.
Les limites suivantes sont configurables :
Propriété | Type | Description | Valeurs prises en charge | Propriété de requête client correspondante |
---|---|---|---|---|
Datascope | string |
Étendue des données de la requête. Cette valeur détermine si la requête s’applique à toutes les données ou uniquement au cache chaud. | All , HotCache ou null |
query_datascope |
MaxMemoryPerQueryPerNode | long |
Quantité maximale de mémoire (en octets) qu’une requête peut allouer. | [1 , 50 % de la RAM totale d’un nœud unique] |
max_memory_consumption_per_query_per_node |
MaxMemoryPerIterator | long |
Quantité maximale de mémoire (en octets) qu’un opérateur de requête peut allouer. | [1 , 50 % de la RAM totale d’un nœud unique] |
maxmemoryconsumptionperiterator |
MaxFanoutThreadsPercentage | int |
Pourcentage de threads sur chaque nœud vers lequel exécuter la requête. Lorsqu’il est défini sur 100 %, le cluster affecte tous les processeurs sur chaque nœud. Par exemple, 16 processeurs sur un cluster déployé sur des nœuds Azure D14_v2. | [1 , 100 ] |
query_fanout_threads_percent |
MaxFanoutNodesPercentage | int |
Pourcentage de nœuds sur le cluster vers lequel exécuter la requête. Fonctionne de la même manière que MaxFanoutThreadsPercentage . |
[1 , 100 ] |
query_fanout_nodes_percent |
MaxResultRecords | long |
Nombre maximal d’enregistrements qu’une demande est autorisée à retourner à l’appelant, au-dessus duquel les résultats sont tronqués. La limite de troncation affecte le résultat final de la requête, tel qu’il est remis au client. Toutefois, la limite de troncation ne s’applique pas aux résultats intermédiaires des sous-requêtes, tels que ceux qui résultent de références entre clusters. | [1 , 9223372036854775807 ] |
truncationmaxrecords |
MaxResultBytes | long |
Taille de données maximale (en octets) qu’une demande est autorisée à retourner à l’appelant, au-dessus de laquelle les résultats sont tronqués. La limite de troncation affecte le résultat final de la requête, tel qu’il est remis au client. Toutefois, la limite de troncation ne s’applique pas aux résultats intermédiaires des sous-requêtes, tels que ceux qui résultent de références entre clusters. | [1 , 9223372036854775807 ] |
truncationmaxsize |
MaxExecutionTime | timespan |
Durée maximale d’une demande. Remarques : 1) Cela peut être utilisé pour placer des limites supplémentaires en plus des limites par défaut sur le temps d’exécution, mais pas pour les étendre. 2) Le traitement du délai d’expiration n’est pas à la résolution de secondes, mais plutôt à empêcher l’exécution d’une requête pendant quelques minutes. 3) Le temps nécessaire à la lecture de la charge utile au niveau du client n’est pas traité dans le cadre du délai d’attente. Il dépend de la vitesse à laquelle l’appelant extrait les données du flux. 4) Le temps d’exécution total peut dépasser la valeur configurée si l’arrêt de l’exécution prend plus de temps. |
[00:00:00 , 01:00:00 ] |
servertimeout |
Notes
Une limite qui n’est pas définie, ou qui est définie comme null
, est extraite de la default
stratégie de limites de requête du groupe de charge de travail.
Utilisation des ressources du processeur
Les requêtes peuvent utiliser toutes les ressources du processeur au sein du cluster. Par défaut, lorsque plusieurs requêtes s’exécutent simultanément, le système utilise une approche de tourniquet équitable pour distribuer les ressources. Cette stratégie est optimale pour obtenir des performances élevées avec des requêtes ad hoc.
Toutefois, il existe des scénarios dans lesquels vous pouvez restreindre les ressources processeur allouées à une requête spécifique. Par instance, si vous exécutez un travail en arrière-plan qui peut prendre en charge des latences plus élevées. La stratégie de limites de requête offre la possibilité de spécifier un pourcentage inférieur de threads ou de nœuds à utiliser lors de l’exécution d’opérations de sous-requête distribuées. Le paramètre par défaut est 100 %.
Groupe de charge de travail default
Le groupe de charge de travail default
comporte la stratégie suivante qui est définie par défaut. Cette stratégie peut être modifiée.
{
"DataScope": {
"IsRelaxable": true,
"Value": "All"
},
"MaxMemoryPerQueryPerNode": {
"IsRelaxable": true,
"Value": < 50% of a single node's total RAM >
},
"MaxMemoryPerIterator": {
"IsRelaxable": true,
"Value": 5368709120
},
"MaxFanoutThreadsPercentage": {
"IsRelaxable": true,
"Value": 100
},
"MaxFanoutNodesPercentage": {
"IsRelaxable": true,
"Value": 100
},
"MaxResultRecords": {
"IsRelaxable": true,
"Value": 500000
},
"MaxResultBytes": {
"IsRelaxable": true,
"Value": 67108864
},
"MaxExecutiontime": {
"IsRelaxable": true,
"Value": "00:04:00"
}
}
Notes
- Les limites du groupe de
default
charge de travail doivent être définies et avoir une valeur différentenull
. - Toutes les limites du groupe de
default
charge de travail ontIsRelaxable
la valeurtrue
. - Les limites de requête sont désactivées pour des types de commandes spécifiques au sein du
default
groupe de charge de travail, tels que.export
les commandes et l’ingestion à partir de commandes de requête telles que.set-or-append
et.set-or-replace
. Lorsque ces commandes sont affectées à un groupe de charge de travail autre que celui par défaut, les limites de requête spécifiées dans la stratégie deviennent applicables.
Exemple
Le code JSON suivant représente un objet de stratégie de limites de demandes personnalisées :
{
"DataScope": {
"IsRelaxable": true,
"Value": "HotCache"
},
"MaxMemoryPerQueryPerNode": {
"IsRelaxable": true,
"Value": 2684354560
},
"MaxMemoryPerIterator": {
"IsRelaxable": true,
"Value": 2684354560
},
"MaxFanoutThreadsPercentage": {
"IsRelaxable": true,
"Value": 50
},
"MaxFanoutNodesPercentage": {
"IsRelaxable": true,
"Value": 50
},
"MaxResultRecords": {
"IsRelaxable": true,
"Value": 1000
},
"MaxResultBytes": {
"IsRelaxable": true,
"Value": 33554432
},
"MaxExecutiontime": {
"IsRelaxable": true,
"Value": "00:01:00"
}
}
Contenu connexe
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour