Dell Automation Platform: Java-Based Containers "OOMKilled" starting from at Kernel 6.12
Summary: Java-based containerized applications (such as Keycloak) may experience unexpected termination due to out-of-memory (OOM) errors when running on Linux Kernel 6.12 or later. This issue stems from changes in how the kernel exposes "cgroup" memory limits. These changes affect the Java Virtual Machine's (JVM) ability to detect and respect container memory constraints correctly. ...
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
For NativeEdge Dell Automation Platform, keycloak is getting OOMKilled during initialization. For example it may happen during the helm installation, when the keycloak pod is coming up.
Logs inside the keycloak end with:
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.
The description of the container shows:
State: Waiting Reason: CrashLoopBackOff Last State: Terminated Reason: OOMKilled
For other environments, it could be:
- The system terminates Java containers (for example,
keycloak, Kafka, Elasticsearch) with anOOMKilledstatus. - JVM reports unexpectedly high heap size estimates, often matching host memory rather than container limits.
- Memory tuning flags like
-XX:MaxRAMPercentageappear ineffective. - Logs may show messages such as:
[debug][os,container] controller memory is not enabled[debug][os,container] One or more required controllers disabled at kernel level
Cause
Starting with Linux Kernel 6.12, the kernel no longer exposes
cgroup controller information by /proc/cgroups, which the JVM previously relied on to detect container memory limits. This change breaks container awareness in affected JVM versions, causing them to assume they have access to the full host memory. As a result, the JVM allocates more memory than the container allows, triggering the kernel's OOMkiller.
There are several issues for this in open-source projects:
Ubuntu 24.04.3 does not use the 6.12 Kernel by default. But some images are updated with 6.12, 6.13, 6.14 versions already (for example, in the AWS image library).
Resolution
There are two possible quick workarounds.
- Temporarily increase the memory limits for the container. For example, here are steps to proceed with the installation of Dell Automation Platform, doubling the memory limit for the
keycloakcontainer.
To do so, you must run the following command (check your orchestrator namespace, for example, below
dapo is the default orchestrator namespace:
kubectl edit sts keycloak -n dapo
Find the memory limits and requests, and double them.
keycloak consumes lots of memory on the preparation step. This increase allowed us to pass this initialization step.
- Explicitly Set JVM Memory Limits
Use startup flags to manually restrict memory usage:
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, NativeEdgeArticle 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.