Dell Automatisierungsplattform: Java-basierte Container "OOMKilled" ab Kernel 6.12

Zusammenfassung: Bei Java-basierten containerbasierten Anwendungen (z. B. Keycloak) kann es bei der Ausführung auf Linux-Kernel 6.12 oder höher zu einer unerwarteten Beendigung aufgrund von OOM-Fehlern (Out-of-Memory) kommen. Dieses Problem ist auf Änderungen in der Art und Weise zurückzuführen, wie der Kernel "cgroup"-Speicherbegrenzungen bereitstellt. Diese Änderungen wirken sich auf die Fähigkeit der Java Virtual Machine (JVM) aus, Speichereinschränkungen in Containern korrekt zu erkennen und zu berücksichtigen. ...

Dieser Artikel gilt für Dieser Artikel gilt nicht für Dieser Artikel ist nicht an ein bestimmtes Produkt gebunden. In diesem Artikel werden nicht alle Produktversionen aufgeführt.

Symptome

Für die NativeEdge Dell Automation Platform keycloak wird OOMKilled während der Initialisierung. Zum Beispiel kann es während der Installation des Helms passieren, wenn die keycloak Pod steht an.

Protokolle im keycloak Enden mit:

Appending additional Java properties to JAVA_OPTS
Changes detected in configuration. Updating the server image.
Updating the configuration and installing your custom providers, if any. Please wait.

Die Beschreibung des Containers zeigt:

State: Waiting
  Reason: CrashLoopBackOff
Last State: Terminated
  Reason: OOMKilled

In anderen Umgebungen kann es folgende Umstände geben:

  • Das System beendet Java-Container (z.B. keycloak, Kafka, Elasticsearch) mit einem OOMKilled Status.
  • JVM meldet unerwartet hohe Schätzungen der Heap-Größe, die oft eher dem Hostspeicher als den Containerlimits entsprechen.
  • Speichertuning-Flags wie -XX:MaxRAMPercentage unwirksam erscheinen.
  • Protokolle können Meldungen wie die folgenden anzeigen:
    • [debug][os,container] controller memory is not enabled
    • [debug][os,container] One or more required controllers disabled at kernel level

Ursache

Ab Linux Kernel 6.12 stellt der Kernel nicht mehr cgroup Controller-Informationen durch /proc/cgroups, auf die sich die JVM zuvor verlassen hat, um Speicherbegrenzungen in Containern zu erkennen. Diese Änderung unterbricht das Bewusstsein für Container in betroffenen JVM-Versionen, wodurch diese davon ausgehen, dass sie Zugriff auf den gesamten Hostspeicher haben. Infolgedessen weist die JVM mehr Arbeitsspeicher zu, als der Container zulässt, und löst die OOMkiller.

In Open-Source-Projekten gibt es dafür mehrere Probleme:

Ubuntu 24.04.3 verwendet standardmäßig nicht den 6.12-Kernel. Einige Images werden jedoch bereits mit den Versionen 6.12, 6.13, 6.14 aktualisiert (z. B. in der AWS-Bildbibliothek).

Lösung

Es gibt zwei mögliche schnelle Problemumgehungen.

  • Erhöhen Sie vorübergehend die Speicherlimits für den Container. Hier sind beispielsweise die Schritte zum Fortfahren mit der Installation der Dell Automation Platform, wobei das Speicherlimit für die keycloak Container.
Führen Sie dazu den folgenden Befehl aus (überprüfen Sie Ihren Orchestrator-Namespace, z. B. unten dapo ist der standardmäßige Orchestrator-Namespace:
kubectl edit sts keycloak -n dapo
Ermitteln Sie die Speicherbegrenzungen und -anforderungen und verdoppeln Sie sie. keycloak verbraucht viel Arbeitsspeicher im Vorbereitungsschritt. Diese Erhöhung ermöglichte es uns, diesen Initialisierungsschritt zu bestehen.
  • Explizites Festlegen von JVM-Speicherlimits

Verwenden Sie Startmarkierungen, um die Arbeitsspeichernutzung manuell einzuschränken:

extraEnvVars:
  - name: JAVA_OPTS_KC_HEAP
    value: "-XX:MaxRAMPercentage=70 -XX:MinRAMPercentage=70 -XX:InitialRAMPercentage=50 -XX:MaxRAM=1G"

Betroffene Produkte

Dell Automation Platform, NativeEdge Solutions, Dell Automation Platform Components, NativeEdge
Artikeleigenschaften
Artikelnummer: 000369678
Artikeltyp: Solution
Zuletzt geändert: 16 Okt. 2025
Version:  2
Antworten auf Ihre Fragen erhalten Sie von anderen Dell NutzerInnen
Support Services
Prüfen Sie, ob Ihr Gerät durch Support Services abgedeckt ist.