3.2. 環境変数を使用した JBoss EAP for OpenShift の設定
JBoss EAP for OpenShift イメージを設定する方法として、環境変数の使用が推奨されます。アプリケーションコンテナーおよびビルドコンテナーに 環境変数を指定 する方法については、OpenShift ドキュメントを参照してください。
たとえば、OpenShift アプリケーションの作成時に、環境変数を使用して JBoss EAP インスタンスの管理ユーザー名およびパスワードを設定することができます。
oc new-app --template=eap73-basic-s2i \ -p IMAGE_STREAM_NAMESPACE=eap-demo \ -p SOURCE_REPOSITORY_URL=https://github.com/jboss-developer/jboss-eap-quickstarts \ -p SOURCE_REPOSITORY_REF=7.3.x-openshift \ -p CONTEXT_DIR=kitchensink \ -e ADMIN_USERNAME=myspecialuser \ -e ADMIN_PASSWORD=myspecialp@ssw0rd
この例では、JDK 8 テンプレートを使用します。JDK 11 の場合は、eap73-openjdk11-basic-s2i
テンプレートを使用します。
JBoss EAP for OpenShift イメージの利用可能な環境変数は、参考情報 のリストを参照してください。
3.2.1. JVM のメモリー設定
OpenShift EAP イメージには、現在の環境に基づいてデフォルトの JVM メモリー設定を自動的に計算するメカニズムがあります。ただし、環境変数を使用して JVM メモリーを設定することも可能です。
3.2.1.1. JVM のデフォルトメモリー設定
現在のコンテナーに対してメモリー制限が定義されており、この制限が利用可能なメモリーの合計よりも小さい場合、デフォルトの JVM メモリー設定は自動的に算出されます。それ以外の場合、デフォルトの JVM メモリー設定は、イメージのベースサーバーとして使用される EAP バージョンの standalone.conf
ファイルで定義されます。
コンテナーのメモリー制限は、/sys/fs/cgroup/memory/memory.limit_in_bytes
ファイルから取得されます。利用可能なメモリーの合計は、/proc/meminfo
コマンドで取得されます。
メモリー設定が自動的に算出されると、以下の式が使用されます。
- 最大ヒープサイズ (-Xmx): ユーザーメモリーの 50%
- 初期ヒープサイズ (-Xms): 計算済み最大ヒープサイズの 25%。
たとえば、定義したメモリー制限が 1 GB で、この制限が /proc/meminfo
に示されている利用可能なメモリー合計よりも低い場合、そのメモリー設定は -Xms128m -Xmx512 になります。
以下の環境変数を使用して、自動的に計算された JVM 設定を変更できます。これらの変数は、デフォルトメモリーサイズが自動的に算出される場合にのみ使用されることに注意してください (つまり、有効なコンテナーのメモリー制限が定義されているとき)。
-
JAVA_MAX_MEM_RATIO
-
JAVA_INITIAL_MEM_RATIO
-
JAVA_MAX_INITIAL_MEM
以下の 2 つの環境変数の値を 0 に設定すると、メモリーの自動計算を無効にできます。
-
JAVA_INITIAL_MEM_RATIO
-
JAVA_MAX_MEM_RATIO
3.2.1.2. JVM ガベージコレクションの設定
OpenShift の EAP イメージには、コレクションとガべージコレクションロギングの両方の設定が含まれます。
ガベージコレクションの設定
-XX:+UseParallelOldGC -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=20 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -XX:+ExitOnOutOfMemoryError
Java 8 のガベージコレクションのロギング設定 (非モジュール JVM)
-verbose:gc -Xloggc:/opt/eap/standalone/log/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=3M -XX:-TraceClassUnloading
Java 11 (modular JVM) のガベージコレクションのロギング設定
-Xlog:gc*:file=/opt/eap/standalone/log/gc.log:time,uptimemillis:filecount=5,filesize=3M
3.2.1.3. デフォルト設定のリソース制限
これが設定されている場合には、追加のデフォルト設定がイメージに含まれます。
-XX:ParallelGCThreads={core-limit} -Djava.util.concurrent.ForkJoinPool.common.parallelism={core-limit} -XX:CICompilerCount=2
{core-limit} の値は、JAVA_CORE_LIMIT
環境変数を使用するか、コンテナーによる CPU コア制限で定義されます。
CICompilerCount
の値は常に 2 に固定されます。
3.2.1.4. JVM 環境変数
これらの環境変数を使用して、EAP for OpenShift イメージで JVM を設定します。
変数名 | 例 | デフォルト値 | JVM の設定 | 説明 |
---|---|---|---|---|
JAVA_OPTS | -verbose:class | デフォルトなし | multiple |
さらに、自動メモリー計算が有効になっていない場合、初期 Java メモリー (-Xms) および最大 Java メモリー (-Xmx) は定義されません。
|
JAVA_OPTS_APPEND | -Dsome.property=value | デフォルトなし | Multiple |
|
JAVA_MAX_MEM_RATIO | 50 | 50 | -Xmx |
|
JAVA_INITIAL_MEM_RATIO | 25 | 25 | -Xms |
この変数は、 |
JAVA_MAX_INITIAL_MEM | 4096 | 4096 | -Xms |
この変数は、 |
JAVA_DIAGNOSTICS | true | false (無効) | この設定は、コンテナーが使用する JDK によって異なります。
|
この変数の値を true に設定すると、イベントの発生時に、標準出力に診断情報が含まれます。 |
DEBUG | true | false | -agentlib:jdwp=transport=dt_socket,address=$DEBUG_PORT,server=y,suspend=n | リモートデバッグを有効にします。 |
DEBUG_PORT | 8787 | 8787 | -agentlib:jdwp=transport=dt_socket,address=$DEBUG_PORT,server=y,suspend=n | デバッグに使用するポートを指定します。 |
JAVA_CORE_LIMIT | 未定義 | -XX:parallelGCThreads -Djava.util.concurrent.ForkJoinPool.common.parallelism -XX:CICompilerCount | コア数におけるユーザー定義の制限。コンテナーが制限の制約を報告する場合、JVM 設定の値はコンテナーのコア制限に制限されます。-XXCICompilerCount の値は、常に 2 です。デフォルトでは、この変数は未定義です。この場合、制限がコンテナーに定義されていなければ、JVM 設定は設定されません。 | |
GC_MIN_HEAP_FREE_RATIO | 20 | 10 | -XX:MinHeapFreeRatio | 拡大を回避するためのガベージコレクション後のヒープ解放の最小パーセンテージ。 |
GC_MAX_HEAP_FREE_RATIO | 40 | 20 | -XX:MaxHeapFreeRatio | 縮小を回避するためのガベージコレクション後のヒープ解放の最大パーセンテージ。 |
GC_TIME_RATIO | 4 | 4 | -XX:GCTimeRatio | ガべージコレクションで費やした時間と、それ以外で費やされる時間の比率を指定します (アプリケーション実行にかかった時間など)。 |
GC_ADAPTIVE_SIZE_POLICY_WEIGHT | 90 | 90 | -XX:AdaptiveSizePolicyWeight | 現在のガベージコレクション時間と以前のガベージコレクション時間に指定される重み。 |
GC_METASPACE_SIZE | 20 | 96 | -XX:MetaspaceSize | 初期メタスペースのサイズ。 |
GC_MAX_METASPACE_SIZE | 100 | 256 | -XX:MaxMetaspaceSize | 最大メタスペースサイズ。 |
GC_CONTAINER_OPTIONS | -XX:+UserG1GC | -XX:-UseParallelOldGC | -XX:-UseParallelOldGC | 使用する Java ガベージコレクションを指定します。この変数の値は、必要なガベージコレクションを指定するための JRE コマンドラインオプションである必要があります。JRE コマンドはデフォルトをオーバーライドします。 |
以下の環境変数が非推奨になりました。
-
JAVA_OPTIONS
:JAVA_OPTS
を使用します。 -
INITIAL_HEAP_PERCENT
:JAVA_INITIAL_MEM_RATIO
を使用します。 -
CONTAINER_HEAP_PERCENT
:JAVA_MAX_MEM_RATIO
を使用します。