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

So überwachen Sie die Speichernutzung in Ihrer Node.js-Anwendung

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, top oder htop.

Diese Techniken können Ihnen helfen, Ihre Node.js-Anwendungen zu optimieren und Speicherprobleme zu vermeiden, die die Leistung beeinträchtigen könnten.

0