Piattaforma di automazione Dell: Container basati su Java "OOMKilled" a partire dal Kernel 6.12
Zusammenfassung: Le applicazioni containerizzate basate su Java (ad esempio Keycloak) potrebbero subire una chiusura imprevista a causa di errori di memoria insufficiente (OOM) durante l'esecuzione sul kernel Linux 6.12 o versione successiva. Questo problema deriva dalle modifiche apportate al modo in cui il kernel espone i limiti di memoria "cgroup". Queste modifiche influiscono sulla capacità della JVM (Java Virtual Machine) di rilevare e rispettare correttamente i vincoli di memoria del container. ...
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
Per NativeEdge Dell Automation Platform, keycloak sta ottenendo OOMKilled durante l'inizializzazione. Ad esempio può accadere durante l'installazione del timone, quando il keycloak Il pod sta arrivando.
Registri all'interno di keycloak Terminare con:
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.
La descrizione del container mostra:
State: Waiting Reason: CrashLoopBackOff Last State: Terminated Reason: OOMKilled
Per altri ambienti, potrebbe essere:
- Il sistema termina i container Java (ad esempio,
keycloak, Kafka, Elasticsearch) con unOOMKilledstato. - JVM segnala stime delle dimensioni dell'heap inaspettatamente elevate, spesso corrispondenti alla memoria host anziché ai limiti del container.
- Flag di ottimizzazione della memoria come
-XX:MaxRAMPercentageappaiono inefficaci. - I registri possono mostrare messaggi come:
[debug][os,container] controller memory is not enabled[debug][os,container] One or more required controllers disabled at kernel level
Ursache
A partire dal kernel Linux 6.12, il kernel non espone più
cgroup Informazioni sul titolare del trattamento /proc/cgroups, su cui la JVM si basava in precedenza per rilevare i limiti di memoria del container. Questa modifica interrompe il riconoscimento dei container nelle versioni JVM interessate, inducendo a presumere di avere accesso all'intera memoria host. Di conseguenza, la JVM alloca più memoria di quanta ne consenta il container, attivando il kernel OOMkiller.
Ci sono diversi problemi per questo nei progetti open source:
Ubuntu 24.04.3 non utilizza il kernel 6.12 per impostazione predefinita. Tuttavia, alcune immagini sono già aggiornate con le versioni 6.12, 6.13, 6.14 (ad esempio, nella libreria di immagini AWS).
Lösung
Esistono due possibili soluzioni alternative.
- Aumentare temporaneamente i limiti di memoria per il container. Ad esempio, di seguito sono riportati i passaggi per procedere con l'installazione di Dell Automation Platform, raddoppiando il limite di memoria per
keycloakcontenitore.
A tale scopo, è necessario eseguire il comando seguente (controllare lo spazio dei nomi dell'agente di orchestration, ad esempio, di seguito
dapo È il namespace dell'orchestrator predefinito:
kubectl edit sts keycloak -n dapo
Individuare i limiti di memoria e le richieste e raddoppiarli.
keycloak Consuma molta memoria nella fase di preparazione. Questo aumento ci ha permesso di superare questo passaggio di inizializzazione.
- Impostazione esplicita dei limiti di memoria JVM
Utilizzare i flag di avvio per limitare manualmente l'utilizzo della memoria:
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, NativeEdgeArtikeleigenschaften
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.