FallstudienBlogÜber uns
Anfragen

Speicherverbrauch und Memory Leaks in Node.js überwachen

Startup House

10. Dez. 20215 Min. Lesezeit

Node.jsBack-end development

Inhaltsverzeichnis

  • Was ist ein 'Memory Leak' in Node.js?

  • Was ist Garbage Collection in Node.js?

    • Ein Beispiel für eine App mit Memory Leak

  • Memory Leaks mit Node Inspector und Chrome DevTools erkennen

    • 3 Snapshots von Memory Leaks in Node.js

  • Fazit – Kenne deine Tools

Für Node.js-Entwickler können Memory Leaks zum echten Albtraum werden – und das Erwachen ist nicht so einfach wie ein Aufschrei in der Nacht. Je länger diese Leaks unentdeckt bleiben, desto länger zieht sich der böse Traum hin.

Heißt konkret: CPU- und Speicherauslastung, Load Average und Antwortzeit einer Anwendung mit Memory-Leak-Bugs steigen kontinuierlich, bis die CPU 100 % erreicht – danach reagiert der Dienst nicht mehr. Das sind typische Symptome, wenn eine Anwendung unter einem Memory Leak leidet.

Bist du als Entwickler davon betroffen, lies weiter: Hier erfährst du, wie du diese Symptome angehst und wie du Speicherverbrauch und Memory Leaks in Node.js-Anwendungen überwachst.

 Arrow11.png

Was ist ein 'Memory Leak' in Node.js?

Einfach gesagt ist ein Memory Leak ein Problem, bei dem eine Anwendung einen Speicherblock allokiert, ihn aber nicht wieder freigibt – oder bei dem der Node.js Garbage Collector ihn nicht bereinigen konnte.

Naja, so in etwa ...

Was ist Garbage Collection in Node.js?

Zunächst müssen wir beim Thema Memory Leak den Garbage Collector ins Spiel bringen. Ganz einfach gesagt: Der Garbage Collector ist ein automatischer Mechanismus, der Speicher von nicht mehr verwendeten Objekten zurückgewinnt.

Im ersten Zyklus ("mark") markiert der Garbage Collector ungenutzte Objekte zur Löschung. Im zweiten Zyklus ("sweep") wird der Speicher freigegeben.

 Unicorn2.png

Ein Beispiel für eine App mit Memory Leak

Für diesen Leitfaden habe ich eine einfache Express.js-Anwendung erstellt, in der jede Anfrage ein leak-Array über die Laufzeit hinweg wachsen lässt – und so den Dienst verlangsamt. Dieses leak-Array wird nirgends manuell geleert, und die Garbage Collection wirkt sich nicht auf global deklarierte Variablen aus. 

Memory Leaks mit Node Inspector und Chrome DevTools erkennen

Um Node Inspector zu nutzen, müssen wir unsere App im Inspect-Mode starten, und in CLI TypeScript:

node --inspect index.js

Dein Script sollte dann mit der Inspect-Option im DevTools/Devices-Tab erscheinen. Klicke auf Inspect, damit Chrome DevTools sich an das Node-Skript anhängt. Uns interessieren hier vor allem der Memory-Tab und die Heap-Snapshot-Option.

Swirl3.png

3 Snapshots von Memory Leaks in Node.js

Um zu testen, ob unsere Anwendung ein Memory Leak hat, nehmen wir 3 Heap-Snapshots. Der erste direkt nach dem Start des Servers; der zweite nach einem Benchmark mit 1000 Requests an unseren Server und der dritte nach einem weiteren Benchmark mit 1000 Requests.

Der zweite Snapshot nach dem ersten Benchmark mit 1000 Requests kann als Warnsignal dienen, wenn der Heap gewachsen ist. Also machen wir den letzten Snapshot nach dem zweiten Benchmark: So lässt sich bestätigen, ob die Anwendung ein Memory Leak hat.

Um die Ursache zu finden, wähle den dritten Snapshot aus, klicke auf die Vergleichsoption und vergleiche ihn mit dem ersten Snapshot. So lassen sich seit dem Serverstart neu erstellte Objekte und Daten identifizieren.

Im letzten Schritt schauen wir uns diese Objekte genauer an und suchen nach Objekten mit gleicher Allokationsgröße. Durch diese Untersuchung lassen sich die Memory Leaks in unserer Anwendung auffinden und beheben.

Fazit – Kenne deine Tools

Wenn du auf bewährte Bibliotheken setzt, ist das Beheben eines Node.js-Memory-Leaks meist deutlich einfacher als das Aufspüren. Entscheidend ist ein gutes Verständnis der Garbage Collection in den DevTools sowie der anderen Tools, die du beim Entwickeln nutzt. Mit den verschiedenen Debuggern, Leak-Catchern und Tools zur Erstellung von Nutzungsdiagrammen kannst du Leaks gezielt isolieren – und sorgst so dafür, dass deine Software schneller und effizienter läuft.

Bei Startup Development House sind wir zugegeben ziemlich erfahren im Umgang mit Node.js – und darin, auftretende Probleme zu lösen. Wenn du als angehender Entwickler etwas von dieser Expertise gebrauchen kannst, melde dich gern unter

 

Veröffentlicht am 10. Dezember 2021

Teilen


Startup House

Digital Transformation Strategy for Siemens Finance

Cloud-based platform for Siemens Financial Services in Poland

See full Case Study
Ad image
Speicherverbrauch und Memory Leaks in Node.js überwachen
Verpassen Sie nichts – abonnieren Sie unseren Newsletter
Ich stimme dem Empfang von Marketing-Kommunikation von Startup House zu. Klicken Sie für die Details

Das könnte Ihnen auch gefallen...

So finden Sie 2023 die beste Node.js-Entwicklungsagentur: Ein umfassender Leitfaden
Node.jsDigital products

So finden Sie 2023 die beste Node.js-Entwicklungsagentur: Ein umfassender Leitfaden

Node.js hat sich als Schlüsseltechnologie für die Entwicklung robuster, skalierbarer Webanwendungen etabliert. Vor diesem Hintergrund ist die Rolle einer Node.js-Entwicklungsagentur wichtiger denn je. Dieser Artikel zeigt Ihnen, wie Sie die besten Node.js-Entwicklungsunternehmen für Ihre spezifischen Anforderungen auswählen.

Marek Pałys

02. Feb. 20236 Min. Lesezeit

Ruby on Rails - guide
Ruby on RailsBack-end developmentComputer programming

Tutorial: Ruby und Ruby on Rails installieren und RubyGems verwenden

Entdecken Sie eine Schritt-für-Schritt-Anleitung zur Installation und Nutzung von Ruby on Rails für die effiziente Entwicklung von Webanwendungen. Erfahren Sie, wie Sie Ruby einrichten, verschiedene Versionen verwalten, mit RubyGems und Bundler arbeiten und ein neues Ruby on Rails-Projekt erstellen. Starten Sie mit diesem umfassenden Leitfaden in die Entwicklung mit Ruby on Rails.

Jan Grela

20. März 20206 Min. Lesezeit

Tech-Stack 2020: GraphQL, Apollo Server und React.js
Back-end developmentProduct developmentGraphQL

Tech-Stack 2020: GraphQL, Apollo Server und React.js

Seit dem Jahr 2000 gelten RESTful-Prinzipien als Branchenstandard für den Aufbau von Web-APIs – doch GraphQL bietet eine effizientere Alternative. Dieser Artikel beleuchtet die Vorteile von GraphQL gegenüber REST, seine Popularität und zeigt, wie man mit Apollo GraphQL einen Server und eine Client-Anwendung entwickelt.

Wojciech Cichoradzki

12. Mai 20207 Min. Lesezeit

Bereit, Ihr Know-how mit KI zu zentralisieren?

Beginnen Sie ein neues Kapitel im Wissensmanagement – wo der KI-Assistent zum zentralen Pfeiler Ihrer digitalen Support-Erfahrung wird.

Kostenlose Beratung buchen

Arbeiten Sie mit einem Team, dem erstklassige Unternehmen vertrauen.

Rainbow logo
Siemens logo
Toyota logo

Wir entwickeln, was als Nächstes kommt.

Unternehmen

Startup Development House sp. z o.o.

Aleje Jerozolimskie 81

Warsaw, 02-001

VAT-ID: PL5213739631

KRS: 0000624654

REGON: 364787848

Kontakt

hello@startup-house.com

Unser Büro: +48 789 011 336

Neues Geschäft: +48 798 874 852

Folgen Sie uns

Award
logologologologo

Copyright © 2026 Startup Development House sp. z o.o.

EU-ProjekteDatenschutzerklärung