Dell Automation-plattform: Java-baserade behållare "OOMKilled" från och med Kernel 6.12

Summary: Java-baserade containerbaserade program (till exempel Keycloak) kan drabbas av oväntad avslutning på grund av minnesfel (OOM) när de körs på Linux Kernel 6.12 eller senare. Det här problemet beror på ändringar i hur kerneln exponerar "cgroup"-minnesgränser. Dessa ändringar påverkar Java Virtual Machines (JVM) förmåga att identifiera och respektera begränsningar i behållarminnet korrekt. ...

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 NativeEdge Dell Automation Platform, keycloak håller på att få OOMKilled under initieringen. Det kan till exempel inträffa under roderinstallationen, när keycloak podden är på gång.

Loggar i keycloak Avsluta med:

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.

Beskrivningen av containern visar:

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

För andra miljöer kan det vara:

  • Systemet avslutar Java-behållare (till exempel keycloak, Kafka, Elasticsearch) med en OOMKilled status.
  • JVM rapporterar oväntat höga uppskattningar av heapstorlek, som ofta matchar värdminne i stället för containergränser.
  • Minnesjusteringsflaggor som -XX:MaxRAMPercentage verkar ineffektiva.
  • Loggar kan visa meddelanden som:
    • [debug][os,container] controller memory is not enabled
    • [debug][os,container] One or more required controllers disabled at kernel level

Cause

Från och med Linux Kernel 6.12 exponerar kerneln inte längre cgroup information om personuppgiftsansvarig genom att /proc/cgroups, som JVM tidigare förlitade sig på för att identifiera minnesgränser för containrar. Den här ändringen bryter containermedvetenheten i berörda JVM-versioner, vilket gör att de antar att de har åtkomst till det fullständiga värdminnet. Därför allokerar JVM mer minne än vad containern tillåter, vilket utlöser kernelns OOMkiller.

Det finns flera problem med detta i projekt med öppen källkod:

Ubuntu 24.04.3 använder inte 6.12-kärnan som standard. Men vissa bilder har redan uppdaterats med versionerna 6.12, 6.13, 6.14 (till exempel i AWS-bildbiblioteket).

Resolution

Det finns två möjliga snabba lösningar.

  • Öka tillfälligt minnesgränserna för containern. Här är till exempel steg för att fortsätta med installationen av Dell Automation Platform och fördubbla minnesgränsen för keycloak behållare.
För att göra det måste du köra följande kommando (kontrollera orchestrator-namnområdet, till exempel nedan dapo är standardnamnområdet för orkestrering:
kubectl edit sts keycloak -n dapo
Hitta minnesgränserna och förfrågningarna och dubbla dem. keycloak Förbrukar mycket minne under förberedelsesteget. Den här ökningen gjorde det möjligt för oss att klara det här initieringssteget.
  • Ange uttryckligen JVM-minnesgränser

Använd startflaggor för att manuellt begränsa minnesanvändningen:

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.