Speicher
In diesem Dokument erfahren Sie, wie Sie Probleme im Zusammenhang mit dem Speicher debuggen können.
Mein Prozess hat nicht genügend Speicher
Node.js (JavaScript) ist eine Sprache mit automatischer Speicherbereinigung (Garbage Collection), sodass Speicherlecks durch sogenannte „Retainer“ möglich sind. Da Node.js-Anwendungen in der Regel mandantenfähig, geschäftskritisch und langlebig sind, ist es wichtig, eine zugängliche und effiziente Möglichkeit zur Erkennung von Speicherlecks zu bieten.
Symptome
Der Benutzer beobachtet eine kontinuierlich steigende Speichernutzung (kann schnell oder langsam erfolgen, über Tage oder sogar Wochen), und dann stürzt der Prozess ab und wird vom Prozessmanager neu gestartet. Der Prozess läuft möglicherweise langsamer als zuvor, und die Neustarts führen dazu, dass einige Anfragen fehlschlagen (Load Balancer antwortet mit 502).
Nebeneffekte
- Prozessneustarts aufgrund der Speichererschöpfung, wodurch Anfragen verloren gehen
- Erhöhte GC-Aktivität führt zu höherer CPU-Auslastung und langsameren Antwortzeiten
- Die GC blockiert die Event Loop, was zu Verlangsamungen führt
- Erhöhtes Speicherauslagern verlangsamt den Prozess (GC-Aktivität)
- Möglicherweise ist nicht genügend Arbeitsspeicher verfügbar, um einen Heap-Snapshot zu erstellen
Mein Prozess nutzt den Speicher ineffizient
Symptome
Die Anwendung verbraucht unerwartet viel Speicher und/oder wir beobachten eine erhöhte Aktivität des Garbage Collectors.
Nebeneffekte
- Eine erhöhte Anzahl von Seitenfehlern
- Höhere GC-Aktivität und CPU-Auslastung