Zu verstehen, wie viel Speicher Ihre Node.js-Anwendung verbraucht, ist entscheidend für die Optimierung der Leistung und die Vermeidung von Speicherlecks. Node.js bietet integrierte Tools, um den Speicherverbrauch programmatisch zu überprüfen, und es gibt auch externe Tools für die Echtzeitüberwachung.
1. Verwendung von process.memoryUsage()
Die Methode process.memoryUsage() in Node.js liefert detaillierte Informationen über den Speicherverbrauch des aktuellen Prozesses. Hier ist ein einfaches Beispiel:
console.log('Speichernutzung:', process.memoryUsage());
Dies gibt ein Objekt mit den folgenden Feldern aus:
- rss: Resident Set Size – Gesamtspeicher, der vom Prozess verwendet wird, einschließlich Code, Daten und zugewiesenem Speicher.
- heapTotal: Gesamtspeicher, der für den JavaScript-Heap zugewiesen wurde.
- heapUsed: Speicher, der derzeit von JavaScript-Objekten verwendet wird.
- external: Speicher, der von C++-Objekten verwendet wird, die an Node.js gebunden sind.
Ein Beispielausgabe:
{
"rss": 33157120,
"heapTotal": 7385088,
"heapUsed": 4812560,
"external": 8272
}
2. Formatierung der Speichernutzung für bessere Lesbarkeit
Um die Ausgabe benutzerfreundlicher zu gestalten, können Sie die Werte in Megabyte formatieren:
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('Speichernutzung:', formatMemoryUsage(process.memoryUsage()));
3. Echtzeit-Speicherüberwachung
Wenn Sie die Speichernutzung in Echtzeit überwachen möchten, können Sie ein periodisches Log mit setInterval einrichten:
setInterval(() => {
console.log('Speichernutzung:', formatMemoryUsage(process.memoryUsage()));
}, 5000); // Alle 5 Sekunden
4. Externe Überwachung der Speichernutzung
Für Fälle, in denen Sie die Speichernutzung von einem anderen Terminal aus oder ohne Änderung Ihres Codes überprüfen möchten, gibt es folgende Optionen:
4.1. Verwendung von Systembefehlen
Auf Linux/Unix:
ps aux | grep node
top -p <PID>
Auf Windows:
tasklist | findstr node
Dann können Sie die Speichernutzung mit Tools wie top, htop oder dem Task-Manager auf Windows überwachen.
4.2. Verwendung der pidusage-Bibliothek
Das pidusage-Paket ist ein praktisches Tool, um Speicher- und CPU-Nutzung für jeden Node.js-Prozess zu verfolgen. Installieren Sie es mit:
npm install pidusage
Hier ist ein Beispiel für die Verwendung:
import pidusage from 'pidusage';
setInterval(async () => {
const stats = await pidusage(process.pid);
console.log(`Speicher: ${(stats.memory / 1024 / 1024).toFixed(2)} MB`);
}, 5000);
Fazit
Um die Speichernutzung effektiv zu überwachen:
- Verwenden Sie
process.memoryUsage()für integrierte Einblicke in den Speicherverbrauch Ihrer Anwendung. - Formatieren Sie die Ausgabe bei Bedarf für eine bessere Lesbarkeit.
- Für die Echtzeitüberwachung nutzen Sie periodisches Logging oder externe Tools wie
pidusage,topoderhtop.
Diese Techniken können Ihnen helfen, Ihre Node.js-Anwendungen zu optimieren und Speicherprobleme zu vermeiden, die die Leistung beeinträchtigen könnten.