7.4.2.3. コンテナー内のすべての JVM プロセスが適切に設定されていることを確認する方法について
複数の JVM が同じコンテナーで実行される場合、それらすべてが適切に設定されていることを確認する必要があります。多くのワークロードでは、それぞれの JVM に memory budget のパーセンテージを付与する必要があります。 これにより大きな安全マージンが残される場合があります。
多くの Java ツールは JVM を設定するために各種の異なる環境変数 (JAVA_OPTS
、GRADLE_OPTS
、MAVEN_OPTS
など) を使用します。 適切な設定が適切な JVM に渡されていることを確認するのが容易でない場合もあります。
JAVA_TOOL_OPTIONS
環境変数は常に OpenJDK によって考慮され、JAVA_TOOL_OPTIONS
に指定された値は、JVM コマンドラインに指定される他のオプションによって上書きされます。デフォルトでは、これらのオプションがスレーブイメージで実行されるすべての JVM ワークロードに対してデフォルトで使用されていることを確認するには、OpenShift Container Platform Jenkins maven スレーブイメージを以下のように設定します。
JAVA_TOOL_OPTIONS="-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -Dsun.zip.disableMemoryMapping=true"
JDK 11 では UseCGroupMemoryLimitForHeap
オプションが削除されました。-XX:+UseContainerSupport
を代わりに使用します。
この設定は、追加オプションが要求されないことを保証する訳ではなく、有用な開始点になることを意図しています。