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

Summary: 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. ...

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Symptoms

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

Cause

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).

Resolution

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"

Affected Products

Dell Automation Platform, NativeEdge Solutions, Dell Automation Platform Components, NativeEdge
Article Properties
Article Number: 000369678
Article Type: Solution
Last Modified: 16 Oct 2025
Version:  2
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.