Dell Automation Platform: Javaベースのコンテナ「OOMKilled」(カーネル6.12以降)

Zhrnutie: Javaベースのコンテナ化されたアプリケーション(Keycloakなど)をLinuxカーネル6.12以降で実行すると、メモリー不足(OOM)エラーが原因で予期せず終了することがあります。この問題は、カーネルが "cgroup" のメモリ制限を公開する方法の変更に起因します。 これらの変更は、コンテナー・メモリーの制約を正しく検出して尊重する Java 仮想マシン (JVM) の機能に影響します。 ...

Tento článok sa vzťahuje na Tento článok sa nevzťahuje na Tento článok nie je viazaný na žiadny konkrétny produkt. V tomto článku nie sú uvedené všetky verzie produktov.

Symptómy

NativeEdge Dell Automation Platform 1.0の場合、 keycloak 取得している OOMKilled 初期化中。たとえば、helm のインストール中に、 keycloak Podが起動予定です

内部のログ 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

Príčina

Linux カーネル 6.12 以降では、カーネルは cgroup コントローラー情報: /proc/cgroupsこれは、JVM がコンテナーのメモリー制限を検出するために以前依存していたものです。この変更により、影響を受けるJVMバージョンのコンテナ認識が中断され、ホストメモリ全体にアクセスできると想定されます。その結果、JVMはコンテナが許可するよりも多くのメモリを割り当て、カーネルの OOMkillerの詳細を確認してください。

オープンソース プロジェクトには、これに関するいくつかの問題があります。

Ubuntu 24.04.3は、デフォルトでは6.12カーネルを使用しません。ただし、一部のイメージは、すでに 6.12、6.13、6.14 バージョンで更新されています (AWS イメージライブラリなど)。

Riešenie

この問題は、Dell Automated Platform 1.1以降で解決されています

Dell Automated Platform 1.0で問題が発生した場合は、次の2つの簡単な回避策があります。

  • コンテナーのメモリ制限を一時的に増やします。たとえば、Dell Automation Platformのインストールを続行し、メモリー制限を2倍にする手順は次のとおりです。 keycloak コンテナー。
これを行うには、次のコマンドを実行する必要があります (たとえば、以下の Orchestrator 名前空間を確認します) dapo は、デフォルトのオーケストレーター名前空間です。
kubectl edit sts keycloak -n dapo
メモリの制限と要求を見つけて、それらを 2 倍にします。 keycloak 準備ステップで多くのメモリを消費します。この増加により、この初期化ステップをパスすることができました。
  • JVMメモリー制限の明示的な設定

起動フラグを使用して、メモリ使用量を手動で制限します。

extraEnvVars:
  - name: JAVA_OPTS_KC_HEAP
    value: "-XX:MaxRAMPercentage=70 -XX:MinRAMPercentage=70 -XX:InitialRAMPercentage=50 -XX:MaxRAM=1G"

Dotknuté produkty

Dell Automation Platform, NativeEdge Solutions, Dell Automation Platform Components, NativeEdge
Vlastnosti článku
Číslo článku: 000369678
Typ článku: Solution
Dátum poslednej úpravy: 28 apr 2026
Verzia:  3
Nájdite odpovede na svoje otázky od ostatných používateľov spoločnosti Dell
Služby podpory
Skontrolujte, či sa na vaše zariadenie vzťahujú služby podpory.