Wie behebt man Probleme mit OOM-Killer-Containerneustarts für Docker-Container?

Wie behebt man Probleme mit OOM-Killer-Containerneustarts für Docker-Container?

4897
Created On 05/29/25 21:30 PM - Last Modified 07/09/25 17:28 PM


Objective


  • Überprüfen Sie die Ausgabe der folgenden Docker-Befehle:
    - Docker PS
    - Docker-Inspektion

    - Docker-Statistiken

Das Ziel besteht darin, festzustellen, ob der Docker-Container neu gestartet wurde. Wenn ja, ist OOM-Killer die Ursache für den Neustart des Containers.



Environment


  • Linux/macOS-Maschine
  • Docker-Laufzeit


Procedure


  • Docker PS

    1. Dieser Befehl zeigt die laufenden Container in Ihrer Umgebung an.
    2. Die Spalte STATUS muss überprüft werden, um festzustellen, wie lange der Container
    war gesund und lief.


    3. Die Laufzeit beweist, dass der Container möglicherweise (in diesem Fall) 2 Stunden lang neu gestartet/neu erstellt wurde.

  • Docker-Inspektion

    1. Der unten gezeigte Ausschnitt wurde aus der Ausgabe dieses Befehls ausgeschnitten. Er bestätigt, dass OOM Killer die Ursache für das Herunterfahren/Beenden des Containers war.

    Der Container wurde zuletzt am FinishedAt": "2025-05-19T13:42:31.566652718Z durch den OOM-Killerprozess.



    2. Es gibt einen weiteren Codeausschnitt bzw. eine einzelne Zeile in der Ausgabe dieses Befehls, in der „RestartCount“ erwähnt wird: 41.

  • Docker-Statistiken

    1. Dieser Befehl zeigt das für den Container festgelegte Cgroup-Limit an, das höchstwahrscheinlich überschritten wird und die Neustarts verursacht.

Auflösung:
Das Docker- aktualisieren Der Befehl ist ein leistungsstarkes Dienstprogramm, mit dem Sie bestimmte Ressourcenlimits und Konfiguration fürAusführen von Containernohne sie anhalten und neu erstellen zu müssen. Dies kann sehr nützlich sein, um die Ressourcenzuweisung dynamisch an die Arbeitslast anzupassen.

So aktualisieren Sie Docker funktioniert, insbesondere im Hinblick auf Ressourcenbeschränkungen:

  • Speichergrenzen:

    • --memory or -m: Sets the maximum amount of memory the container can use (e.g., 512m, 2g). If a container exceeds this limit, it may be OOMKilled (Out Of Memory Killed) by the system.
    • --memory-swap: The total amount of memory and swap the container can use. If you set --memory but not --memory-swap, the container can use swap space up to twice the memory limit (if host swap is enabled). To prevent a container from using any swap, set --memory-swap to the same value as --memory
  • In diesem Anwendungsfall reicht der 4-Gi-Speicher für den Container nicht aus, daher kommt es zu Containerneustarts. Dies kann mit dem folgenden Befehl geändert werden:
docker update --memory=6g <name-of-the-container>

Bitte beachten Sie:

  • Memory Swap (--memory-swap): Allows you to update the total memory the container can use (RAM + Swap).
    • If --memory-swap is set to the same value as --memory, the container cannot use swap.
    • If --memory-swap is -1, the container can use unlimited swap (up to the host's available swap).
    • If --memory is set and --memory-swap is not, the container can use swap up to the same amount as the memory limit (total 2x the memory limit)


Additional Information


Die OOM-Meldungen können mit dem folgenden Befehl überprüft werden:

sudo dmesg -T | grep -i "oom-killer" or sudo journalctl -k | grep -i "oom-killer"



Actions
  • Print
  • Copy Link

    https://knowledgebase.paloaltonetworks.com/KCSArticleDetail?id=kA1Ki000000fxcpKAA&lang=de&refURL=http%3A%2F%2Fknowledgebase.paloaltonetworks.com%2FKCSArticleDetail

Choose Language