Skip to content

Speicher

In diesem Dokument erfahren Sie, wie Sie Speicherprobleme debuggen können.

Mein Prozess hat nicht genügend Speicher

Node.js (JavaScript) ist eine Garbage-Collected-Sprache, daher sind Speicherlecks durch Retainer möglich. Da Node.js-Anwendungen in der Regel Multi-Tenant-, geschäftskritisch und langlebig sind, ist es wichtig, eine zugängliche und effiziente Möglichkeit zum Auffinden eines Speicherlecks bereitzustellen.

Symptome

Der Benutzer beobachtet eine kontinuierlich steigende Speichernutzung (kann schnell oder langsam sein, über Tage oder sogar Wochen) und sieht dann, wie der Prozess abstürzt und vom Prozessmanager neu gestartet wird. Der Prozess läuft möglicherweise langsamer als zuvor und die Neustarts führen dazu, dass einige Anfragen fehlschlagen (Load Balancer antwortet mit 502).

Nebenwirkungen

  • Prozessneustarts aufgrund von Speichererschöpfung und Anfragen gehen verloren
  • Erhöhte GC-Aktivität führt zu höherer CPU-Auslastung und langsameren Antwortzeiten
    • GC blockiert die Event Loop und verursacht Verlangsamung
  • Erhöhtes Speicherswapping verlangsamt den Prozess (GC-Aktivität)
  • Möglicherweise nicht genügend verfügbarer Speicher, um einen Heap-Snapshot zu erhalten

Mein Prozess nutzt Speicher ineffizient

Symptome

Die Anwendung verbraucht eine unerwartete Menge an Speicher und/oder wir beobachten eine erhöhte Garbage Collector-Aktivität.

Nebenwirkungen

  • Eine erhöhte Anzahl von Page Faults
  • Höhere GC-Aktivität und CPU-Auslastung