Outils

L'enregistreur – suivi des requêtes et des événements

Enregistrer les requêtes web, les tâches de fond, les requêtes SQL et les événements du cycle de vie des documents pour diagnostiquer une lenteur.

L'enregistreur – suivi des requêtes et des événements

L'Enregistreur (Recorder) capture ce que le serveur fait pendant quelques minutes : les requêtes web, les tâches de fond, les requêtes SQL et les méthodes du cycle de vie des documents. Il sert à trouver la cause d'une lenteur ou d'un comportement inattendu.

Prérequis

  • Être connecté avec le compte Administrator. Les autres utilisateurs, même gestionnaires système, reçoivent le message « Seul l'Administrateur est autorisé à utiliser l'Enregistreur ».

Démarrer un enregistrement

  1. Ouvrez la recherche (Ctrl+K) et saisissez Enregistreur.
  2. Cliquez sur Démarrer. La fenêtre Configurer l'enregistreur s'ouvre.
  3. Choisissez ce qu'il faut enregistrer (voir le tableau ci-dessous).
  4. Cliquez sur Commencer à enregistrer. L'indicateur passe à « Actif ».
  5. Faites l'action à analyser dans un autre onglet.
  6. Revenez sur l'enregistreur et cliquez sur Arrêter.

L'enregistrement s'arrête seul après 10 minutes. La liste se rafraîchit toutes les 5 secondes pendant l'enregistrement.

Les options de la fenêtre s'affichent en anglais :

OptionEffetPar défaut
Record Web RequestsEnregistre les requêtes web.Cochée
Request path filterEnregistre seulement les chemins qui commencent par ce texte, par exemple /api/method/erpnext. Vide : toutes les requêtes./
Record Background JobsEnregistre les tâches de fond.Cochée
Background Jobs filterEnregistre seulement les tâches dont le nom contient ce texte, par exemple email_queue.pull.Vide
Record SQL queriesEnregistre chaque requête SQL.Cochée
Generate EXPLAIN for SQL queriesAjoute le plan d'exécution de chaque requête.Cochée
Capture callstack of SQL queriesIndique le code qui a lancé chaque requête.Cochée
Capture document lifecycle timelineEnregistre chaque méthode du cycle de vie et chaque doc_events, avec sa durée et l'application qui l'a déclenchée.Cochée
Run cProfileProfile le code Python. Ralentit beaucoup le serveur. Décochez Capture callstack of SQL queries avec cette option.Décochée

Vous devez enregistrer au moins les requêtes web ou les tâches de fond.

Lire les résultats

Chaque ligne de la liste est une requête ou une tâche. Elle montre le Lien (le chemin appelé), la Durée, l'heure, le Nombre de requêtes, le Nombre d'événements et les Applications impliquées. Ouvrez la ligne pour voir aussi la Durée des requêtes.

Ouvrez une ligne pour voir :

  • Les Requêtes SQL, avec leur durée, leur plan et la pile d'appels.
  • Les Applications impliquées.
  • La Chronologie des événements du cycle de vie : méthode, type de document, document, applications, nombre de requêtes et durée en millisecondes.
  • Les Indexes suggérés pour les requêtes lentes.
  • Le Résultat CProfile, si l'option était cochée.

Exemple

Exemple fictif : la création d'un client prend plusieurs secondes.

  1. Démarrez l'enregistreur avec Request path filter à /api/method/frappe.desk.form.save.
  2. Créez le client « Maison Verte SARL ».
  3. Arrêtez l'enregistreur et ouvrez la ligne de la sauvegarde.
  4. Dans la Chronologie, triez par durée. Une méthode validate d'une application tierce prend 3 secondes et lance 400 requêtes.
  5. Corrigez ou désactivez ce code, puis refaites la mesure.

Gérer les enregistrements

  • Réinitialiser supprime tous les enregistrements.
  • Exporter (menu) télécharge les enregistrements dans un fichier JSON.
  • Importer (menu) charge un fichier exporté, si la liste est vide.
L'enregistrement ralentit le serveur. Utilisez des filtres en production et arrêtez l'enregistreur dès la mesure faite. Les enregistrements sont gardés dans le cache Redis, pas en base de données. Un vidage du cache les efface.