Stop worrying about the potholes in the road and enjoy the journey

Comment surveiller l’utilisation de la mémoire dans votre application Node.js

Comprendre combien de mémoire votre application Node.js consomme est essentiel pour optimiser les performances et prévenir les fuites de mémoire. Node.js fournit des outils intégrés pour vérifier l’utilisation de la mémoire de manière programmatique, et il existe également des outils externes pour la surveillance en temps réel.

1. Utilisation de process.memoryUsage()

La méthode process.memoryUsage() dans Node.js fournit des informations détaillées sur la consommation de mémoire du processus actuel. Voici un exemple de base :

console.log('Utilisation de la mémoire :', process.memoryUsage());

Cela affichera un objet avec les champs suivants :

  • rss : Resident Set Size – mémoire totale utilisée par le processus, y compris le code, les données et la mémoire allouée.
  • heapTotal : Mémoire totale allouée pour le tas JavaScript.
  • heapUsed : Mémoire actuellement utilisée par les objets JavaScript.
  • external : Mémoire utilisée par les objets C++ liés à Node.js.

Un exemple de sortie :

{
  "rss": 33157120,
  "heapTotal": 7385088,
  "heapUsed": 4812560,
  "external": 8272
}

2. Formater l’utilisation de la mémoire pour la lisibilité

Pour rendre la sortie plus conviviale, vous pouvez formater les valeurs en mégaoctets :

function formatMemoryUsage(memory) {
    return {
        rss: `${(memory.rss / 1024 / 1024).toFixed(2)} MB`,
        heapTotal: `${(memory.heapTotal / 1024 / 1024).toFixed(2)} MB`,
        heapUsed: `${(memory.heapUsed / 1024 / 1024).toFixed(2)} MB`,
        external: `${(memory.external / 1024 / 1024).toFixed(2)} MB`
    };
}

console.log('Utilisation de la mémoire :', formatMemoryUsage(process.memoryUsage()));

3. Surveillance de la mémoire en temps réel

Si vous souhaitez surveiller l’utilisation de la mémoire en temps réel, vous pouvez configurer un journal périodique en utilisant setInterval :

setInterval(() => {
    console.log('Utilisation de la mémoire :', formatMemoryUsage(process.memoryUsage()));
}, 5000); // Toutes les 5 secondes

4. Surveillance externe de l’utilisation de la mémoire

Dans les cas où vous souhaitez vérifier l’utilisation de la mémoire depuis un autre terminal ou sans modifier votre code, voici quelques options :

4.1. Utilisation des commandes système

Sur Linux/Unix :

ps aux | grep node
top -p <PID>

Sur Windows :

tasklist | findstr node

Ensuite, vous pouvez surveiller l’utilisation de la mémoire avec des outils comme top, htop, ou le Gestionnaire des tâches sur Windows.

4.2. Utilisation de la bibliothèque pidusage

Le package pidusage est un outil pratique pour suivre l’utilisation de la mémoire et du CPU pour tout processus Node.js. Installez-le avec :

npm install pidusage

Voici un exemple d’utilisation :

import pidusage from 'pidusage';

setInterval(async () => {
    const stats = await pidusage(process.pid);
    console.log(`Mémoire : ${(stats.memory / 1024 / 1024).toFixed(2)} MB`);
}, 5000);

Conclusion

Pour surveiller efficacement l’utilisation de la mémoire :

  • Utilisez process.memoryUsage() pour obtenir des informations intégrées sur la consommation de mémoire de votre application.
  • Formatez la sortie pour une meilleure lisibilité si nécessaire.
  • Pour une surveillance en temps réel, utilisez le journal périodique ou des outils externes comme pidusage, top, ou htop.

Ces techniques peuvent vous aider à garder vos applications Node.js optimisées et à prévenir les problèmes de mémoire qui pourraient affecter les performances.

0