Plataforma de automação da Dell: Contêineres baseados em Java "OOMKilled" a partir do Kernel 6.12

Summary: Aplicativos conteinerizados baseados em Java (como Keycloak) podem sofrer encerramento inesperado devido a erros de falta de memória (OOM) ao executar no Linux Kernel 6.12 ou posterior. Esse problema decorre de alterações na forma como o kernel expõe os limites de memória "cgroup". Essas alterações afetam a capacidade da Java Virtual Machine (JVM) de detectar e respeitar corretamente as restrições de memória do contêiner. ...

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

Para a Dell Automation Platform NativeEdge, keycloak está ficando OOMKilled durante a inicialização. Por exemplo, isso pode acontecer durante a instalação do módulo, quando o keycloak pod está chegando.

Registros dentro do keycloak Termine com:

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.

A descrição do contêiner mostra:

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

Para outros ambientes, pode ser:

  • O sistema encerra contêineres Java (por exemplo, keycloak, Kafka, Elasticsearch) com um OOMKilled estado.
  • A JVM relata estimativas inesperadamente altas de tamanho de heap, muitas vezes correspondendo aos limites de memória do host em vez de contêiner.
  • Sinalizadores de ajuste de memória como -XX:MaxRAMPercentage parecem ineficazes.
  • Os registros podem mostrar mensagens como:
    • [debug][os,container] controller memory is not enabled
    • [debug][os,container] One or more required controllers disabled at kernel level

Cause

A partir do Linux Kernel 6.12, o kernel não expõe mais cgroup Informações do controlador por /proc/cgroups, no qual a JVM contava anteriormente para detectar limites de memória do contêiner. Essa alteração interrompe o reconhecimento de contêineres nas versões afetadas da JVM, fazendo com que eles presponham que têm acesso à memória completa do host. Como resultado, a JVM aloca mais memória do que o contêiner permite, acionando as OOMkiller.

Há vários problemas para isso em projetos de código aberto:

O Ubuntu 24.04.3 não usa o kernel 6.12 por padrão. Mas algumas imagens já foram atualizadas com as versões 6.12, 6.13 e 6.14 (por exemplo, na biblioteca de imagens da AWS).

Resolution

Há duas possíveis soluções temporárias rápidas.

  • Aumente temporariamente os limites de memória do contêiner. Por exemplo, estas são as etapas para prosseguir com a instalação da Dell Automation Platform, dobrando o limite de memória para o keycloak recipiente.
Para fazer isso, execute o seguinte comando (verifique o namespace do orquestrador, por exemplo, abaixo dapo é o namespace padrão do orquestrador:
kubectl edit sts keycloak -n dapo
Localize os limites e solicitações de memória e dobre-os. keycloak Consome muita memória na etapa de preparação. Esse aumento nos permitiu passar essa etapa de inicialização.
  • Limites de memória JVM explicitamente definidos

Use indicadores de inicialização para restringir manualmente o uso da memória:

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.