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, ouhtop.
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.