{"id":25361,"date":"2026-10-26T15:33:49","date_gmt":"2026-10-26T14:33:49","guid":{"rendered":"https:\/\/linux-bibel.at\/?p=25361"},"modified":"2026-10-26T15:33:50","modified_gmt":"2026-10-26T14:33:50","slug":"out-of-memory-oom-killer-unter-linux-ein-wenig-technik","status":"publish","type":"post","link":"https:\/\/linux-bibel.at\/index.php\/2026\/10\/26\/out-of-memory-oom-killer-unter-linux-ein-wenig-technik\/","title":{"rendered":"Out Of Memory (OOM) Killer unter Linux &#8211; ein wenig Technik"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Der Linux-Kernel steuert so gut wie alles, was unter ihm l\u00e4uft &#8211; also alles, auch den Speicher (<em>Hauptspeicher oder auch RAM genannt<\/em>). Ein Computer kann noch so viel RAM haben, wenn eine Software durch einen Fehler immer mehr solchen braucht, ist der RAM irgendwann zu Ende. Dann muss der Kernel irgend etwas tun (<em>nicht nur der Linux-Kernel, sondern auch der von Windows oder macOS<\/em>) &#8211; er wird einen Prozess beenden, um dem restlichen Betriebssystem wieder mehr RAM zur Verf\u00fcgung stellen zu k\u00f6nnen &#8211; hat dieses zu wenig, steht die Kiste ganz einfach und dies muss vermieden werden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der Prozess, der in diesem Fall Prozesse beendet, nennt sich Out Of Memory-Killer, oder kurz einfach OOM. In den meisten F\u00e4llen wird OOM ganz einfach den Prozess killen, der am meisten RAM ben\u00f6tigt. Schlimm ist dies etwa auf einem Server, dessen Webseite etwa eine Datenbank ben\u00f6tigt &#8211; ohne die DB funktioniert die Webseite nicht.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Wie w\u00e4hlt der OOM-Killer entsprechende Prozesse aus?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Der OOM-Killer w\u00e4hlt zu beendende Prozesse nach einem Score aus, diese sucht er sich aus dem Systemverzeichnis &#8222;<em>\/proc<\/em>&#8220; (<em>hierzu sind root-Rechte n\u00f6tig<\/em>):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ls \/proc\/<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom.jpg\" rel=\"lightbox-0\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"530\" src=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-1024x530.jpg\" alt=\"\" class=\"wp-image-25362\" srcset=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-1024x530.jpg 1024w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-150x78.jpg 150w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-300x155.jpg 300w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-768x397.jpg 768w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom.jpg 1400w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Jeder Prozess hat hier sein eigenes Verzeichnis mit einer Nummer, in jedem solchen Verzeichnis finden sich einige Dateien &#8211; etwa:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ls \/proc\/174\/<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-1.jpg\" rel=\"lightbox-1\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"530\" src=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-1-1024x530.jpg\" alt=\"\" class=\"wp-image-25363\" srcset=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-1-1024x530.jpg 1024w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-1-150x78.jpg 150w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-1-300x155.jpg 300w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-1-768x397.jpg 768w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-1.jpg 1400w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Unter anderem findet sich in einem solchen Verzeichnis eine Datei Namens &#8222;<strong>oom_score<\/strong>&#8222;, diese beinhaltet einen Score, nachdem OOM ausw\u00e4hlt, ob dieser Prozess beendet wird oder nicht. Sehen wir uns den Inhalt der Datei dieses zuf\u00e4lligen Prozesses einmal an:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>less \/proc\/174\/oom_score<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-2.jpg\" rel=\"lightbox-2\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"530\" src=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-2-1024x530.jpg\" alt=\"\" class=\"wp-image-25364\" srcset=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-2-1024x530.jpg 1024w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-2-150x78.jpg 150w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-2-300x155.jpg 300w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-2-768x397.jpg 768w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-2.jpg 1400w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Die Zahl in dieser Datei, ist der Score, nachdem OOM zu beendende Prozesse ausw\u00e4hlt. Je h\u00f6her der Score, desto eher wird OOM diesen Prozess bei mangelndem Speicher beenden. Dies war nur ein kleiner Einblick in die Technik &#8211; Sie k\u00f6nnen sich die Prozesse mit folgendem Befehl anzeigen lassen, welche OOM am ehesten beenden wird &#8211; mit <code>head -n Zahl<\/code> geben Sie die Anzahl der Prozesse an:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>for pid in $(ls -d \/proc\/&#91;0-9]* | cut -d\/ -f3); do   if &#91; -r \"\/proc\/$pid\/oom_score\" ]; then     printf \"%-8s %-8s %s\\n\" \"$pid\" \"$(cat \/proc\/$pid\/oom_score)\" \"$(cat \/proc\/$pid\/comm 2>\/dev\/null)\";   fi; done | sort -k2 -nr | head -n 10<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-3.jpg\" rel=\"lightbox-3\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"530\" src=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-3-1024x530.jpg\" alt=\"\" class=\"wp-image-25365\" srcset=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-3-1024x530.jpg 1024w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-3-150x78.jpg 150w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-3-300x155.jpg 300w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-3-768x397.jpg 768w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-3.jpg 1400w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Der Befehl <code>sort<\/code> sortiert die Ausgabe in Spalten &#8211; die erste zeigt die PID (<em>Prozess-ID<\/em>), die zweite den Score und die dritte den Prozess-Namen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mit folgendem Befehl sehen Sie den Score direkt an zweiter Stelle &#8211; mit <code>head -Zahl<\/code> steuern Sie die Anzahl der ausgegebenen Prozesse:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>for p in \/proc\/&#91;0-9]*; do printf '%s %s %s\\n' \"$(cat $p\/oom_score 2>\/dev\/null)\" \"$(cat $p\/oom_score_adj 2>\/dev\/null)\" \"$(cat $p\/comm 2>\/dev\/null)\"; done | sort -rn | head -5<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-4.jpg\" rel=\"lightbox-4\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"530\" src=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-4-1024x530.jpg\" alt=\"\" class=\"wp-image-25366\" srcset=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-4-1024x530.jpg 1024w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-4-150x78.jpg 150w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-4-300x155.jpg 300w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-4-768x397.jpg 768w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-4.jpg 1400w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ein kleines St\u00fcck weiter in der Technik &#8211; im Verzeichnis findet sich auch eine Datei Namens &#8222;<strong>oom_score_adj<\/strong>&#8222;, diese dient dazu, den Score selbst zu ver\u00e4ndern &#8211; wurde nichts angepasst, ist der Wert darin &#8222;0&#8220;.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">OOM-Killer nutzen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Jetzt nehmen wir einmal an, Ihre Webseite (<em>oder was auch immer<\/em>) funktioniert auf einmal nicht mehr &#8211; jetzt gilt es erst einmal herauszufinden, ob OOM-Killer dahinter steckt. Versuchen wir es einfach einmal mit dem Prozess &#8222;<strong>apache2<\/strong>&#8220; oder &#8222;<strong>php-fpm8.1<\/strong>&#8222;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>journalctl -k -g 'oom-killer|apache2'\njournalctl -k -g 'oom-killer|php-fpm8.1'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ob OOM-Killer \u00fcberhaupt schon einmal zugeschlagen hat, sehen Sie mit:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>journalctl -k -g 'oom-killer'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Eine m\u00f6gliche Ausgabe, wenn die Software zugeschlagen hat:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Oct 21 02:14:07 kernel: php-fpm8.1 invoked oom-killer: gfp_mask=0x140cca(GFP_HIGHUSER_MOVABLE|__GFP_COMP), order=0, oom_score_adj=0\nOct 21 02:14:07 kernel: Out of memory: Killed process 1187 (mariadbd) total-vm:2457316kB, anon-rss:1201344kB, file-rss:0kB, shmem-rss:0kB, UID:107 pgtables:2876kB oom_score_adj:0\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn Sie verhindern wollen, das OOM einen Prozess killt, der unbedingt weiterlaufen soll, m\u00fcssen Sie erst einmal wissen, wie dessen Score aussieht. Ein Beispiel f\u00fcr den Prozess &#8222;<strong>chrome<\/strong>&#8222;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>choom -p $(pgrep -o chrome)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Oder f\u00fcr alle m\u00f6glichen Chrome-Instanzen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>for pid in $(pidof chrome); do   choom -p \"$pid\"; done<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-5.jpg\" rel=\"lightbox-5\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"530\" src=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-5-1024x530.jpg\" alt=\"\" class=\"wp-image-25367\" srcset=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-5-1024x530.jpg 1024w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-5-150x78.jpg 150w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-5-300x155.jpg 300w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-5-768x397.jpg 768w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-5.jpg 1400w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Jetzt k\u00f6nnen Sie den Score manuell ver\u00e4ndern &#8211; die Werte reichen von &#8222;-1000 (<em>nie beenden<\/em>), \u00fcber &#8222;1000&#8220; (<em>gleichg\u00fcltig<\/em>) und &#8222;+1000&#8220; (<em>sofort bei Problemen beenden<\/em>).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>choom -p $(pidof chrome) -n -1000<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Oder f\u00fcr alle Instanzen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>for pid in $(pidof chrome); do; choom -p \"$pid\" -n -1000; done<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Solche Manipulationen halten bis zum n\u00e4chsten Neustart des Systems. M\u00f6chten Sie Einstellungen dauerhaft setzen, m\u00fcssen Sie etwas tiefer greifen &#8211; sehen wir uns in diesem Beispiel die Systemd-Unit &#8222;<strong>cups<\/strong>&#8220; an:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl show cups -p OOMScoreAdjust<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Beispiel f\u00fcr die Ausgabe:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-6.jpg\" rel=\"lightbox-6\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"530\" src=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-6-1024x530.jpg\" alt=\"\" class=\"wp-image-25369\" srcset=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-6-1024x530.jpg 1024w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-6-150x78.jpg 150w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-6-300x155.jpg 300w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-6-768x397.jpg 768w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-6.jpg 1400w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">M\u00f6chten Sie dessen Score anpassen, bearbeiten Sie die Systemd-Datei des Prozesses, am schnellsten ganz einfach f\u00fcr die genannte Unit:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl edit cups.service<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Standard in diesem Fall:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>### Editing \/etc\/systemd\/system\/cups.service.d\/override.conf\n### Anything between here and the comment below will become the contents of the drop-in file\n\n\n\n### Edits below this comment will be discarded\n\n\n### \/usr\/lib\/systemd\/system\/cups.service\n# &#91;Unit]\n# Description=CUPS Scheduler\n# Documentation=man:cupsd(8)\n# After=network.target nss-user-lookup.target time-set.target nslcd.service\n# Requires=cups.socket\n# \n# &#91;Service]\n# ExecStart=\/usr\/sbin\/cupsd -l\n# Type=notify\n# Restart=on-failure\n# Slice=system-cups.slice\n# \n# \n# &#91;Install]\n# Also=cups.socket cups.path\n# WantedBy=printer.target multi-user.target<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Im Bereich &#8222;<strong>[Service]<\/strong>&#8220; f\u00fcgen Sie jetzt als erste Zeile neu hinzu und geben den gew\u00fcnschten Score an, im Beispiel &#8222;<strong>-1000<\/strong>&#8222;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>### Editing \/etc\/systemd\/system\/cups.service.d\/override.conf\n### Anything between here and the comment below will become the contents of the drop-in file\n\n\n\n### Edits below this comment will be discarded\n\n\n### \/usr\/lib\/systemd\/system\/cups.service\n# &#91;Unit]\n# Description=CUPS Scheduler\n# Documentation=man:cupsd(8)\n# After=network.target nss-user-lookup.target time-set.target nslcd.service\n# Requires=cups.socket\n# \n# &#91;Service]\nOOMScoreAdjust=-1000\n# ExecStart=\/usr\/sbin\/cupsd -l\n# Type=notify\n# Restart=on-failure\n# Slice=system-cups.slice\n# \n# \n# &#91;Install]\n# Also=cups.socket cups.path\n# WantedBy=printer.target multi-user.target<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Anschlie\u00dfend starten Sie den Service neu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Den Speicher begrenzen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Jetzt haben wir aber noch immer ein Problem &#8211; OOM wird den Prozess zwar nicht beenden, er wird aber auf Grund welchen Fehlers auch immer (<em>siehe etwa die letzten beiden PHP-L\u00fccken<\/em>) nicht beenden, wenn der Speicher ausgeht, sondern erst andere. Aber wenn der eine Prozess immer mehr RAM ben\u00f6tigt, wird er einmal von selbst abst\u00fcrzen, weil eben einmal kein freier RAM mehr da ist.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wir m\u00fcssen dem Prozess also etwa eine RAM-Grenze vorgeben. Dies funktioniert am einfachsten, wenn das Betriebssystem &#8222;<strong>cgroups v2<\/strong>&#8220; nutzt, dies zeigt der Befehl:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>stat -fc %T \/sys\/fs\/cgroup<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-7.jpg\" rel=\"lightbox-7\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"530\" src=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-7-1024x530.jpg\" alt=\"\" class=\"wp-image-25371\" srcset=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-7-1024x530.jpg 1024w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-7-150x78.jpg 150w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-7-300x155.jpg 300w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-7-768x397.jpg 768w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-7.jpg 1400w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Die Ausgabe <code>cgroup2fs<\/code> best\u00e4tigt dies. Um dem Service mit einer Speichergrenze zu belegen nutzen wir wieder <a href=\"https:\/\/linux-bibel.at\/index.php\/2023\/09\/03\/systemd-die-steuerzentrale-von-linux\/\" data-type=\"post\" data-id=\"783\">Systemd<\/a>. Im Beispiel mit dem Service &#8222;<strong>php-fpm8.1<\/strong>&#8220; und einer weichen Grenze von &#8222;<strong>1,5GB<\/strong>&#8220; und einer harten Grenze von &#8222;<strong>2GB<\/strong>&#8222;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl set-property php-fpm8.1.service MemoryHigh=1.5G MemoryMax=2G<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>MemoryHigh=<\/strong> &#8211; die weiche Grenze. \u00dcberschreitet der Prozess diese gesetzte Grenze, beendet der Kernel andere Prozesse, f\u00fcr die keine Grenze gesetzt ist und weniger wichtig sind.<\/li>\n\n\n\n<li><strong>MemoryMax=<\/strong> &#8211; die harte Grenze. Ab dieser Grenze werden keine anderen Prozesse mehr beendet &#8211; der Prozess bekommt einfach nicht mehr. Der Prozess wird zwar langsamer arbeiten, aber trotzdem kaum abst\u00fcrzen.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Sie k\u00f6nnen sich gesetzte Grenzen nat\u00fcrlich auch anzeigen lassen, mit demselben Service:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl show php-fpm8.1.service -p MemoryHigh -p MemoryMax<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Speichergrenzen testen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Sie k\u00f6nnen Speichergrenzen auch testen, bevor Sie solche aktivieren. Beispielsweise wieder mit dem oben genannten Service, hier jedoch zus\u00e4tzlich mit einer Swap-Grenze (<em>so nutzt das Service wirklich nur den RAM und kann nicht in den Auslagerungsspeicher auslagern<\/em>):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemd-run --unit=php-fpm8.1 -p MemoryHigh=1.5G MemoryMax=2G -p MemorySwapMax=0 tail \/dev\/zero<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>tail \/dev\/zero<\/code> sorgt hierbei, dass der Prozess immer mehr Daten bekommt, in wenigen Sekunden werden die gesetzten Grenzen erreich sein, anschlie\u00dfend k\u00f6nnen Sie mit folgendem Befehl sehen, was passiert ist:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>journalctl -u php-fpm8.1 --no-pager<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Speicherprobleme fr\u00fchzeitig stoppen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">OOM beginnt seine Arbeit erst im letzten Moment &#8211; also, bevor es wirklich kritisch wird. So kann es sein, dass das Betriebssystem ein paar Minuten sehr langsam ist, bevor OOM wirklich Prozesse killt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">OOM zieht seine Daten aus der Datei &#8222;<em>\/proc\/pressure\/memory<\/em>&#8222;, also dem Speicherdruck des Systems, ob diese aktiv ist (bei Red Hat, Rocky und \u00e4hnlichen Systemen nicht), zeigt der Befehl:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat \/proc\/pressure\/memory<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-8.jpg\" rel=\"lightbox-8\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"530\" src=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-8-1024x530.jpg\" alt=\"\" class=\"wp-image-25372\" srcset=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-8-1024x530.jpg 1024w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-8-150x78.jpg 150w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-8-300x155.jpg 300w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-8-768x397.jpg 768w, https:\/\/linux-bibel.at\/wp-content\/uploads\/2026\/10\/oom-8.jpg 1400w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Erhalten Sie hier eine Ausgabe wie im Screenshot oben &#8211; aktiv. Ist die Funktion nicht aktiv, k\u00f6nnen Sie diese mit folgendem Befehl aktivieren:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>grubby --update-kernel=ALL --args=\"psi=1\"\nreboot<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Je nach System k\u00f6nnen auch entsprechende Pakete fehlen, die Sie wie folgt installieren und aktivieren:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install systemd-oomd \nsystemctl enable --now systemd-oomd<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>dnf install systemd-oomd\nsystemctl enable --now systemd-oomd<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Jetzt k\u00f6nnen wir OOM zeigen, wann es seine Arbeit beginnen soll, hierzu \u00f6ffnen wir die die Systemd-Datei &#8222;slice&#8220; und bearbeiten diese:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl edit system.slice<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Hier f\u00fcgen wir folgende Konfiguration hinzu:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \/etc\/systemd\/system\/system.slice.d\/override.conf \n&#91;Slice] \nManagedOOMMemoryPressure=kill \nManagedOOMMemoryPressureLimit=60%<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>ManagedOOMMemoryPressure=kill<\/strong> &#8211; weist Systemd-OOMD an, entsprechende Dienste zu \u00fcberwachen und zu beenden, wenn der Speicherdruck zu hoch bleibt.<\/li>\n\n\n\n<li><strong>ManagedOOMMemoryPressureLimit=60%<\/strong> &#8211; legt den Schwellwert der Speicherauslastung fest. Wird der vorkonfigurierte Wert innerhalb der vorkonfigurierten Zeit (<em>standardm\u00e4\u00dfig 30 Sekunden<\/em>) &#8211; hier 60 Prozent \u00fcberschritten, beginnt OOM seine Arbeit und wartet nicht bis zum letzten Moment. Die vorkonfigurierte Zeit legen Sie in der Datei &#8222;<em>\/etc\/systemd\/oomd.conf<\/em>&#8220; fest.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Mit dem Befehl <code>oomctl<\/code> k\u00f6nnen Sie anschlie\u00dfend die aktuellen Einstellungen anzeigen lassen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Der Linux-Kernel steuert so gut wie alles, was unter ihm l\u00e4uft &#8211; also alles, auch den Speicher (Hauptspeicher oder auch RAM genannt). Ein Computer kann noch so viel RAM haben, wenn eine Software durch einen Fehler immer mehr solchen braucht, ist der RAM irgendwann zu Ende. Dann muss der Kernel irgend etwas tun (nicht nur [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":25374,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[15],"class_list":["post-25361","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-system","tag-system"],"_links":{"self":[{"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/posts\/25361","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/comments?post=25361"}],"version-history":[{"count":4,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/posts\/25361\/revisions"}],"predecessor-version":[{"id":25375,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/posts\/25361\/revisions\/25375"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/media\/25374"}],"wp:attachment":[{"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/media?parent=25361"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/categories?post=25361"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/tags?post=25361"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}