Platforma automatyzacji Dell: Kontenery oparte na języku Java "OOMKilled" począwszy od jądra 6.12
Zusammenfassung: Aplikacje konteneryzowane oparte na języku Java (takie jak Keycloak) mogą ulec nieoczekiwanemu zakończeniu z powodu błędów braku pamięci (OOM) podczas uruchamiania w jądrze Linux 6.12 lub nowszym. Ten problem wynika ze zmian w sposobie, w jaki jądro uwidacznia limity pamięci "cgroup". Te zmiany wpływają na zdolność maszyny wirtualnej Java (JVM) do prawidłowego wykrywania i respektowania ograniczeń pamięci kontenera. ...
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
W przypadku platformy automatyzacji Dell NativeEdge keycloak jest coraz OOMKilled podczas inicjalizacji. Na przykład może się to zdarzyć podczas instalacji steru, gdy keycloak Zbliża się kapsuła.
Dzienniki wewnątrz keycloak Zakończ na:
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.
W opisie kontenera znajdują się:
State: Waiting Reason: CrashLoopBackOff Last State: Terminated Reason: OOMKilled
W przypadku innych środowisk może to być:
- System zamyka kontenery Java (na przykład
keycloak, Kafka, Elasticsearch) zOOMKilledstan. - JVM zgłasza nieoczekiwanie wysokie oszacowania rozmiaru sterty, często zgodne z pamięcią hosta, a nie limitami kontenera.
- Flagi dostrajania pamięci, takie jak
-XX:MaxRAMPercentagewydają się nieskuteczne. - Dzienniki mogą zawierać komunikaty, takie jak:
[debug][os,container] controller memory is not enabled[debug][os,container] One or more required controllers disabled at kernel level
Ursache
Począwszy od jądra Linux 6.12, jądro nie ujawnia już
cgroup Informacje o administratorze danych poprzez: /proc/cgroups, na którym wcześniej korzystała maszyna wirtualna JVM w celu wykrywania limitów pamięci kontenera. Ta zmiana przerywa świadomość kontenerów w wersjach JVM, których dotyczy problem, powodując, że zakładają, że mają dostęp do pełnej pamięci hosta. W rezultacie JVM przydziela więcej pamięci, niż pozwala na to kontener, wyzwalając OOMkiller.
Istnieje kilka problemów związanych z tym w projektach open source:
System Ubuntu 24.04.3 domyślnie nie używa jądra 6.12. Ale niektóre obrazy są już aktualizowane do wersji 6.12, 6.13, 6.14 (na przykład w bibliotece obrazów AWS).
Lösung
Możliwe są dwa szybkie sposoby obejścia problemu.
- Tymczasowo zwiększ limity pamięci dla kontenera. Na przykład poniżej przedstawiono kroki, które należy wykonać, aby kontynuować instalację platformy automatyzacji firmy Dell, podwajając limit pamięci dla
keycloakkontener.
W tym celu należy uruchomić następujące polecenie (sprawdź przestrzeń nazw programu Orchestrator, na przykład poniżej
dapo jest domyślną przestrzenią nazw programu Orchestrator:
kubectl edit sts keycloak -n dapo
Znajdź limity pamięci i żądania, a następnie je podwoić.
keycloak Zużywa dużo pamięci na etapie przygotowania. Ten wzrost pozwolił nam przejść ten etap inicjalizacji.
- Jawne ustawianie limitów pamięci JVM
Użyj flag startowych, aby ręcznie ograniczyć użycie pamięci:
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.