Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Utilisation de la journalisation des requêtes lentes Amazon Neptune
Il peut être difficile d'identifier, de déboguer et d'optimiser une requête lente. Lorsque la journalisation des requêtes lentes dans Neptune est activée, les attributs de toutes les requêtes de longue durée sont automatiquement journalisés pour faciliter ce processus.
Note
La journalisation des requêtes lentes a été introduite dans la version 1.2.1.0 du moteur Neptune.
Vous activez la journalisation des requêtes lentes à l'aide du paramètre de cluster de bases de données neptune_enable_slow_query_log. Par défaut, ce paramètre est défini sur disabled
. En le définissant info
ou en activant la debug
journalisation des requêtes lentes. Le paramètre info
journalise quelques attributs utiles de chaque requête lente, tandis que le paramètre debug
journalise tous les attributs disponibles.
Pour définir le seuil d'une requête considérée comme lente, utilisez le paramètre de cluster de bases de données neptune_slow_query_log_threshold afin de spécifier le nombre de millisecondes au bout desquelles une requête en cours d'exécution sera considérée comme lente et sera enregistrée lorsque la journalisation des requêtes lentes est activée. La valeur par défaut est de 5 000 millisecondes (5 secondes).
Vous pouvez définir ces paramètres de cluster de bases de données dans ou à l'aide de la AWS CLI commande modify-db-cluster-parameter-group ou de la fonction odifyDBCluster ParameterGroup de gestion M. AWS Management Console
Note
Les paramètres de journalisation des requêtes lentes sont dynamiques, ce qui signifie que la modification de leurs valeurs ne nécessite ni ne provoque le redémarrage de votre cluster de bases de données.
Pour consulter les journaux des requêtes lentes dans le AWS Management Console
Vous pouvez consulter et télécharger les journaux des requêtes lentes dans le AWS Management Console, comme suit :
Sur la page Instances, choisissez une instance de base de données, puis faites défiler la page jusqu'à la section Journaux. Vous pouvez ensuite y sélectionner un fichier journal, puis choisir Télécharger pour le télécharger.
Fichiers générés par la journalisation des requêtes lentes Neptune
Les fichiers journaux générés par la journalisation des requêtes lentes dans Neptune présentent les caractéristiques suivantes :
Les fichiers sont codés en UTF -8.
Les requêtes et leurs attributs sont enregistrés dans le JSON formulaire.
Les attributs nuls et vides ne sont pas journalisés, sauf pour les données
queryTime
.Les journaux couvrent plusieurs fichiers dont le nombre varie en fonction de la taille de l'instance.
Les entrées de journal ne sont pas classées par ordre séquentiel. Vous pouvez utiliser leur valeur
timestamp
pour les classer.Pour consulter les derniers événements, vous devrez peut-être passer en revue tous les fichiers journaux de requêtes lentes.
Les fichiers journaux font l'objet d'une rotation lorsqu'ils atteignent 100 Mio au total. Cette limite n'est pas configurable.
Attributs de requête journalisés en mode info
Les attributs suivants sont journalisés pour les requêtes lentes lorsque le paramètre de cluster de bases de données neptune_enable_slow_query_log
a été défini sur info
:
Groupe | Attribut | Description |
---|---|---|
requestResponseMetadata |
|
ID de demande de la requête. |
|
Type de demande, comme HTTP ou WebSocket. |
|
|
Code d'état de la réponse à la requête, comme 200. |
|
|
Classe d'exception de l'erreur renvoyée après l'exécution de la requête. |
|
queryStats |
|
Chaîne de requête. |
|
Empreinte digitale de la requête. |
|
|
Langage de requête, comme Gremlin, SPARQL ouopenCypher. |
|
memoryStats |
|
Autorisations allouées à la requête. |
|
Mémoire approximative utilisée par la requête pendant l'exécution. |
|
queryTime |
|
Heure de début de la requête (UTC). |
|
Durée totale d'exécution de la requête, en millisecondes. |
|
|
Durée d'analyse de la requête, en millisecondes. |
|
|
Temps d'attente de Gremlin/SPARQL/openCypher la file d'attente des requêtes, en millisecondes |
|
|
Durée d'exécution de la requête, en millisecondes. |
|
|
Durée de sérialisation de la requête, en millisecondes. |
|
statementCounters |
|
Nombre de déclarations lues. |
|
Nombre de déclarations écrites. |
|
|
Nombre de déclarations supprimées. |
|
transactionCounters |
|
Nombre de transactions effectuées. |
|
Nombre de transactions annulées. |
|
vertexCounters |
|
Nombre de sommets ajoutés. |
|
Nombre de sommets supprimés. |
|
|
Nombre de propriétés de sommet ajoutées. |
|
|
Nombre de propriétés de sommet supprimées. |
|
edgeCounters |
|
Nombre d'arêtes ajoutées. |
|
Nombre d'arêtes supprimées. |
|
|
Nombre de propriétés d'arête ajoutées. |
|
|
Nombre de propriétés d'arête supprimées. |
|
resultCache |
|
Nombre d'accès au cache de résultats. |
|
Nombre d'échec d'accès au cache de résultats. |
|
|
Nombre de mises en cache des résultats. |
|
concurrentExecution |
|
Requêtes parallèles acceptées avec l'exécution de la requête actuelle au début. |
|
Requêtes parallèles exécutées avec l'exécution de la requête actuelle au début. |
|
|
Requêtes parallèles acceptées avec l'exécution de la requête actuelle à la fin. |
|
|
Requêtes parallèles exécutées avec l'exécution de la requête actuelle à la fin. |
|
queryBatch |
|
Taille du lot lors du traitement des requêtes. |
|
Taille du lot lors de la sérialisation des requêtes. |
Attributs de requête journalisés en mode debug
Lorsque le paramètre du cluster de bases de données neptune_enable_slow_query_log
est défini sur debug
, les attributs suivants du compteur de stockage sont journalisés en plus des attributs journalisés en mode info
:
Attribut | Description |
---|---|
|
Déclarations analysées dans tous les index. |
|
Déclarations numérisées dans SPOG l'index. |
|
Déclarations numérisées dans POGS l'index. |
|
Déclarations numérisées dans GPSO l'index. |
|
Déclarations numérisées dans OSGP l'index. |
|
Déclarations analysées ensemble par segments. |
|
Déclarations laissées après le filtrage post-analyse. |
|
Déclarations distinctes analysées. |
|
Déclarations lues après le filtrage post-analyse dans tous les index. |
|
Les instructions lues après le scan sont filtrées dans SPOG l'index. |
|
Les instructions lues après le scan sont filtrées dans POGS l'index. |
|
Les instructions lues après le scan sont filtrées dans GPSO l'index. |
|
Les instructions lues après le scan sont filtrées dans OSGP l'index. |
|
Nombre de recherches de chemins d'accès. |
|
Nombre de recherches de chemins d'accès par clé entièrement délimités. |
|
Nombre de chemins d'accès recherchés par préfixe. |
|
Nombre de recherches ayant généré un ou plusieurs enregistrements en sortie. |
|
Nombre de recherches pour lesquelles aucun enregistrement n'a été généré. |
|
Nombre total d'enregistrements trouvés à partir de toutes les recherches. |
|
Nombre de déclarations insérées dans tous les index. |
|
Nombre de déclarations mises à jour dans tous les index. |
|
Nombre de déclarations supprimées dans tous les index. |
|
Nombre de prédicats. |
|
Nombre de lectures du dictionnaire de la table de valeurs à la table d'ID. |
|
Nombre de lectures du dictionnaire à partir de l'ID de la table de valeurs. |
|
Nombre d'écritures du dictionnaire de la table de valeurs à la table d'ID. |
|
Nombre d'écritures du dictionnaire dans la table d'ID jusqu'à la table de valeurs. |
|
Nombre de plages de valeurs dans tous les index. |
|
Nombre de blocages dans la requête. |
|
Nombre d'insertions de cardinalité uniques effectuées. |
|
Nombre de déclarations supprimées lors de l'insertion d'une cardinalité unique. |
Exemple de journalisation du débogage pour une requête lente
L'exécution de la requête Gremlin suivante peut prendre plus de temps que le seuil défini pour les requêtes lentes :
gremlin=g.V().has('code','AUS').repeat(out().simplePath()).until(has('code','AGR')).path().by('code').limit(20).fold()
Si la journalisation des requêtes lentes était activée en mode de débogage, les attributs suivants seraient journalisés pour la requête, sous la forme suivante :
{ "requestResponseMetadata": { "requestId": "5311e493-0e98-457e-9131-d250a2ce1e12", "requestType": "HTTP_GET", "responseStatusCode": 200 }, "queryStats": { "query": "gremlin=g.V().has('code','AUS').repeat(out().simplePath()).until(has('code','AGR')).path().by('code').limit(20).fold()", "queryFingerprint": "g.V().has(string0,string1).repeat(__.out().simplePath()).until(__.has(string0,string2)).path().by(string0).limit(long0).fold()", "queryLanguage": "Gremlin" }, "memoryStats": { "allocatedPermits": 20, "approximateUsedMemoryBytes": 14838 }, "queryTimeStats": { "startTime": "23/02/2023 11:42:52.657", "overallRunTimeMs": 2249, "executionTimeMs": 2229, "serializationTimeMs": 13 }, "statementCounters": { "read": 69979 }, "transactionCounters": { "committed": 1 }, "concurrentExecutionStats": { "acceptedQueryCountAtStart": 1 }, "queryBatchStats": { "queryProcessingBatchSize": 1000, "querySerialisationBatchSize": 1000 }, "storageCounters": { "statementsScannedInAllIndexes": 69979, "statementsScannedSPOGIndex": 44936, "statementsScannedPOGSIndex": 4, "statementsScannedGPSOIndex": 25039, "statementsReadInAllIndexes": 68566, "statementsReadSPOGIndex": 43544, "statementsReadPOGSIndex": 2, "statementsReadGPSOIndex": 25020, "accessPathSearches": 27, "fullyBoundedAccessPathSearches": 27, "dictionaryReadsFromValueToIdTable": 10, "dictionaryReadsFromIdToValueTable": 17, "rangeCountsInAllIndexes": 4 } }