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

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

この記事は次に適用されます: この記事は次には適用されません: この記事は、特定の製品に関連付けられていません。 すべての製品パージョンがこの記事に記載されているわけではありません。

現象

NativeEdge Dell Automation Platform 1.0의 경우 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

原因

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

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

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

解決方法

이 문제는 Dell 자동화 플랫폼 1.1 이상에서 해결되었습니다

Dell Automated Platform 1.0에서 문제가 발생하는 경우 두 가지 빠른 해결 방법이 있습니다.

  • 컨테이너에 대한 메모리 제한을 일시적으로 늘립니다. 예를 들어, 다음은 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"

対象製品

Dell Automation Platform, NativeEdge Solutions, Dell Automation Platform Components, NativeEdge
文書のプロパティ
文書番号: 000369678
文書の種類: Solution
最終更新: 23 5月 2026
バージョン:  4
質問に対する他のDellユーザーからの回答を見つける
サポート サービス
お使いのデバイスがサポート サービスの対象かどうかを確認してください。