L'enregistreur – suivi des requêtes et des événements
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
- Ouvrez la recherche (Ctrl+K) et saisissez Enregistreur.
- Cliquez sur Démarrer. La fenêtre Configurer l'enregistreur s'ouvre.
- Choisissez ce qu'il faut enregistrer (voir le tableau ci-dessous).
- Cliquez sur Commencer à enregistrer. L'indicateur passe à « Actif ».
- Faites l'action à analyser dans un autre onglet.
- 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 :
| Option | Effet | Par défaut |
|---|---|---|
| Record Web Requests | Enregistre les requêtes web. | Cochée |
| Request path filter | Enregistre seulement les chemins qui commencent par ce texte, par exemple /api/method/erpnext. Vide : toutes les requêtes. | / |
| Record Background Jobs | Enregistre les tâches de fond. | Cochée |
| Background Jobs filter | Enregistre seulement les tâches dont le nom contient ce texte, par exemple email_queue.pull. | Vide |
| Record SQL queries | Enregistre chaque requête SQL. | Cochée |
| Generate EXPLAIN for SQL queries | Ajoute le plan d'exécution de chaque requête. | Cochée |
| Capture callstack of SQL queries | Indique le code qui a lancé chaque requête. | Cochée |
| Capture document lifecycle timeline | Enregistre 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 cProfile | Profile 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.
- Démarrez l'enregistreur avec Request path filter à
/api/method/frappe.desk.form.save. - Créez le client « Maison Verte SARL ».
- Arrêtez l'enregistreur et ouvrez la ligne de la sauvegarde.
- Dans la Chronologie, triez par durée. Une méthode
validated'une application tierce prend 3 secondes et lance 400 requêtes. - 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.