Zum Hauptinhalt springen

Was ist ein "out of memory"-Ereignis?

Der Linux-Kernel überwacht fortwährend die Auslastung des Arbeitsspeichers eines Systems. Sollte die Auslastung einen kritischen Wert erreichen, so kann der Kernel auf eine "out of memory killer" genannte Routine zurückgreifen.

Um die Stabilität des Systems nicht zu gefährden, werden durch diesen Prozess in der Regel die zu diesem Zeitpunkt besonders arbeitsspeicherintensiven Prozesse terminiert.

Da diese Prozesse nicht kontrolliert gestoppt werden, wird in Abhängigkeit des Prozesses die Datenintegrität, bspw. einer Datenbank, gefährdet.

Sollten diese "out of memory"-Ereignisse regelmässig auftreten, so raten wir dringlichst dazu, die Menge des Arbeitsspeichers zu erweitern.

Automatische Benachrichtigung

Wir informieren Sie über alle "out of memory"-Ereignisse, die auf Ihrem System auftreten. Für jeden Prozess (bspw. Java, MySQL, PHP) erhalten Sie eine gesonderte Information. Die Ereignisse der letzten 6 Stunden werden zusammengefasst.

Hinweise zu häufig betroffenen Prozessen

Da der Linux Kernel bevorzugt die besonders ressourcenlastigen Prozesse terminiert, beobachten wir für einige Prozesse diese Ereignisse gehäuft:

  • MySQL / Postgres
  • Java
  • User-Space Prozesse, bspw. Atlassian Software
  • Elasticsearch
  • PHP
  • PHP-FPM als Webserverumgebung
  • PHP als CLI Umgebung, bspw. Cronjobs

Hierbei gilt es zu beachten, dass die Ressourcennutzung dieser Prozesse in aller Regel durch die Menge der Aufrufe oder der zu verarbeitenden Datenmenge bestimmt wird und die Ursache des "out of memory"-Ereignisses in der Regel im Applikationsumfeld zu verorten ist.

Speziell nach einem Anstieg der Nutzung oder zu Spitzenzeiten (bspw. im Weihnachtsgeschäft) kann der Ressourcenbedarf merklich höher liegen.

Aktuelle Arbeitsspeichernutzung anzeigen

Eine Übersicht der aktuellen Arbeitsspeichernutzung erhalten Sie, wenn Sie folgenden Befehl in einer Shell ausführen:

www-data@server:~ # ps -eo pid,cmd,%cpu,%mem --sort=-%mem | head -n 11

PID CMD %CPU %MEM
986 /usr/sbin/mysqld --daemoniz 0.1 7.3
125872 ruby2.5 /usr/lib/hello-worl 0.0 2.0
234301 ruby2.5 /usr/lib/find-file- 0.0 1.4
208475 ruby2.5 /usr/lib/find-dir-a 0.0 1.2
310 ruby2.5 /usr/lib/find-dir-b 0.0 1.0
1325 ruby2.5 /usr/lib/find-dir-c 0.0 0.9
125826 ruby2.5 /usr/lib/find-dir-d 0.0 0.9
126039 ruby2.5 /usr/lib/find-dir-e 0.1 0.9
2089 ruby2.5 /usr/lib/find-file- 0.1 0.8
166352 ruby2.5 /usr/lib/exec-comma 0.4 0.7

Dies zeigt die 10 arbeitsspeicherintensivsten Prozesse an. Bitte beachten Sie, dass es sich dabei um eine Momentaufnahme handelt und die Arbeitsspeichernutzung - je nach Applikation oder Service - deutlichen Schwankungen unterliegt.

Zusätzlichen Arbeitsspeicher bestellen

Sollten Sie zusätzlichen Arbeitsspeicher benötigen oder Fragen zu dieser Information haben, so zögern Sie nicht, uns zu kontaktieren: support@nine.ch