Dell 자동화 플랫폼: 커널 6.12부터 Java 기반 컨테이너 "OOMKilled"

Summary: Java 기반 컨테이너화된 애플리케이션(예: Keycloak)은 Linux 커널 6.12 이상에서 실행할 때 메모리 부족(OOM) 오류로 인해 예기치 않은 종료를 경험할 수 있습니다. 이 문제는 커널이 "cgroup" 메모리 제한을 노출하는 방식의 변경으로 인해 발생합니다. 이러한 변경사항은 컨테이너 메모리 제한조건을 올바르게 감지하고 준수하는 JVM(Java Virtual Machine)의 기능에 영향을 줍니다. ...

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

NativeEdge Dell Automation Platform의 경우 keycloak 얻고있다 OOMKilled 초기화 중. 예를 들어 helm 설치 중에 keycloak 포드가 나타납니다.

내부 로그 keycloak 다음으로 끝남:

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.

컨테이너에 대한 설명에는 다음이 표시됩니다.

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

다른 환경에서는 다음과 같을 수 있습니다.

  • 시스템은 Java 컨테이너(예: keycloak, Kafka, Elasticsearch)를 OOMKilled 상태.
  • JVM은 예기치 않게 높은 힙 크기 추정치를 보고하며, 종종 컨테이너 한계가 아닌 호스트 메모리와 일치합니다.
  • 메모리 튜닝 플래그: -XX:MaxRAMPercentage 효과적이지 않은 것처럼 보입니다.
  • 로그에 다음과 같은 메시지가 표시될 수 있습니다.
    • [debug][os,container] controller memory is not enabled
    • [debug][os,container] One or more required controllers disabled at kernel level

Cause

Linux 커널 6.12부터 커널은 더 이상 cgroup 컨트롤러 정보 제공 /proc/cgroups, JVM은 이전에 컨테이너 메모리 제한을 감지하는 데 의존했습니다. 이 변경으로 인해 영향을 받는 JVM 버전에서 컨테이너 인식이 중단되어 전체 호스트 메모리에 액세스할 수 있다고 가정하게 됩니다. 결과적으로 JVM은 컨테이너가 허용하는 것보다 더 많은 메모리를 할당하여 커널의 OOMkiller명령을 수행할 수 있는 충분한 공간이 있어야 합니다.

오픈 소스 프로젝트에는 이에 대한 몇 가지 문제가 있습니다.

Ubuntu 24.04.3은 기본적으로 6.12 커널을 사용하지 않습니다. 그러나 일부 이미지는 이미 6.12, 6.13, 6.14 버전으로 업데이트됩니다(예: AWS 이미지 라이브러리).

Resolution

두 가지 빠른 해결 방법이 있습니다.

  • 컨테이너에 대한 메모리 제한을 일시적으로 늘립니다. 예를 들어, 다음은 Dell Automation Platform의 설치를 진행하여 메모리 제한을 두 배로 늘리는 단계입니다. keycloak 컨테이너.
이렇게 하려면 다음 명령을 실행해야 합니다(예: 아래 오케스트레이터 네임스페이스 확인 dapo 는 기본 오케스트레이터 네임스페이스입니다.
kubectl edit sts keycloak -n dapo
메모리 한계 및 요청을 찾아서 두 배로 늘립니다. keycloak 준비 단계에서 많은 메모리를 사용합니다. 이러한 증가를 통해 이 초기화 단계를 통과할 수 있었습니다.
  • 명시적으로 JVM 메모리 한계 설정

시작 플래그를 사용하여 메모리 사용을 수동으로 제한:

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.