Speicherleck
Ein Speicherleck in SysAdmin Crisis: ein Prozess auf einer Maschine, der keinen Speicher zurückgibt. Lerne die Log-Signatur und die Abgrenzung.
Zuletzt aktualisiert:
Das Leck ist der leiseste Vorfall im Katalog. Nichts schnellt hoch, nichts läuft über – ein einzelner Prozess auf einer einzelnen Maschine gibt einfach keinen Speicher mehr zurück.
Was es tut
Der RAM einer Maschine steigt über Minuten, nicht über Sekunden. Erreicht er die Obergrenze, beginnt der OOM killer, Prozesse abzuschießen, was für sich genommen schon ein Dienstausfall ist. Bleibt nichts mehr übrig, das er abschießen kann, geht die Maschine auf DOWN.
Wichtig ist, dass das lokal ist. Es betrifft eine Maschine und es betrifft den RAM – nicht die Bandbreite, nicht die Festplatte, nicht den Serverpark.
Die Log-Signatur
Zuerst steigt der Speicherprozentwert in monit; erreicht er die Obergrenze, holt der Kernel den OOM killer. Der OOM-Eintrag nennt, wer den Killer aufgerufen hat, nicht die PID des leckenden Prozesses:
02:41:08 web-02 monit[601]: 'web-02' mem usage of 80% matches resource limit [mem usage > 75.0%]
02:43:52 web-02 monit[601]: 'api-worker' mem usage of 38% matches resource limit [mem usage > 25.0%]
02:45:10 web-02 kernel: nginx invoked oom-killer: gfp_mask=0x140cca(GFP_HIGHUSER_MOVABLE|__GFP_COMP), order=0, oom_score_adj=0
free zeigt das Gesamtbild, und top zeigt, welcher Prozess wächst. Sortiere die Prozessliste nach Speicherverbrauch; der leckende Prozess ist womöglich nicht der, der im OOM-Eintrag steht.
Wenn du es in Ruhe lässt
Der OOM killer arbeitet die Prozessliste der Reihe nach ab, sodass du Funktion Stück für Stück verlierst, bevor du die Maschine verlierst. Weil die Maschine auf CRIT und dann auf DOWN geht, entstehen die Kosten für die Verfügbarkeit nicht als gesonderter Abzug, sondern über den Serverzustand – plus SLA-Schuld, sobald die Karenzzeit verstrichen ist.
Abgrenzung
| Sieht ähnlich aus | Was unterscheidet |
|---|---|
| DDoS-Flut | Eine Flut erhöht CPU und Bandbreite auf allen Webmaschinen; ein Leck erhöht den RAM auf genau einer. |
| Festplatte voll | Keines schnellt hoch, beide schleichen; aber das eine ist RAM, das andere ein Mountpoint. df klärt es in einer Zeile. |
| Runaway-Job | Beide nennen einen Prozess in der Ausgabe von top. Ein Runaway-Job blockiert die CPU; ein Leck lässt den Speicher wachsen. |
Wann es auftaucht
| Früheste Nacht | 2 |
| Voraussetzung | eine web-Maschine |
| Gewicht | 100 – gleichauf mit den wahrscheinlichsten Vorfällen im Spiel |
| Gleichzeitig | eine Instanz |