Skip to content

Diagnostic de Performance avec Clinic Doctor

Clinic Doctor est un outil de diagnostic pour Node.js qui peut aider à identifier les goulots d'étranglement de performance dans les applications. Voici comment commencer avec Clinic Doctor afin de mesurer la performance d’une application Node.js.

Étape 1: Installation de Clinic Doctor

Ouvrez un terminal et tapez la commande suivante pour installer Clinic Doctor globalement.

sh
npm install -g clinic
npm install -g clinic

Étape 2: Diagnostic de votre Application

Placez-vous dans le répertoire de votre projet Node.js, et exécutez votre application avec Clinic Doctor.

sh
clinic doctor -- node ./monApp.js
clinic doctor -- node ./monApp.js

Remplacez ./monApp.js par le fichier de démarrage de votre application.

Étape 3: Génération du Rapport de Diagnostic

Une fois que vous avez terminé votre session de test, appuyez sur Ctrl + C dans le terminal. Clinic Doctor générera trois fichiers: un fichier .html, un fichier .clinic-doctor et un fichier .traceevent. Ouvrez le fichier .html dans un navigateur web pour voir le rapport de diagnostic.

Analyse du Rapport de Diagnostic

Étape 4: Analyse du Rapport de Diagnostic

Analysez le rapport généré par Clinic Doctor. Il fournit des informations sur les goulots d'étranglement potentiels, les fuites de mémoire, et d'autres problèmes de performance dans votre application.

  1. CPU: Clinic Doctor affichera l’utilisation du CPU, aidant à identifier si votre application utilise le CPU de manière inefficace.
  2. Mémoire: Il vous montrera aussi l'utilisation de la mémoire et aidera à identifier les fuites de mémoire possibles.

Signification des Colonnes

  • RSS (Resident Set Size) : Il s'agit toujours de la valeur la plus élevée, représentant toute la mémoire allouée dans le cadre de l'exécution de ce processus. L'écart entre cette ligne et la ligne Total Heap Allocated représente la mémoire non-heap, telle que le stockage du code JS lui-même, la "pile" qui contient des pointeurs de variables et des primitives comme les états booléens et entiers, et un pool de mémoire pour le contenu des tampons.
  • THA (Total Heap Allocated) : Il s'agit de la quantité d'espace qui a été mise de côté pour stocker les éléments qui ont une référence, tels que les chaînes de caractères, les objets et les fermetures de fonctions. Contrairement à la pile, où sont stockés les pointeurs de référence de ces éléments, une quantité de mémoire prédéfinie est affectée au tas, avant qu'il ne soit nécessaire.
  • HU (Heap Used) : Il s'agit de la quantité de mémoire du tas réellement utilisée à ce stade. Elle représente la taille totale de toutes les chaînes, objets, fermetures, etc. qui ont été alloués mais non collectés à un moment donné. C'est généralement la ligne la plus intéressante, RSS et Total Heap Allocated fournissant le contexte.
  1. Défilement d'événements: Le rapport inclus aussi un défilement d'événements pour observer l'exécution de différentes tâches dans votre application.

Étape 5: Optimisation de l'Application

En fonction des résultats obtenus, apportez les modifications nécessaires à votre code pour résoudre les problèmes de performance identifiés. Cela pourrait inclure l'optimisation des boucles, la réduction de la complexité des algorithmes, la gestion appropriée de la mémoire, etc.