Red Hat Training
A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform
第9章 JVM の設定
Java Virtual Machine (JVM) の設定は、スタンドアロンの JBoss EAP サーバーと管理対象ドメインの JBoss EAP サーバーでは異なります。
スタンドアロン JBoss EAP サーバーインスタンスでは、起動時にサーバー起動プロセスが JVM 設定を JBoss EAP サーバーに渡します。これは、JBoss EAP を起動する前にコマンドラインから宣言できます。また、管理コンソールの System Properties 画面を使用して宣言することもできます。
管理対象ドメインでは、JVM の設定は host.xml
および domain.xml
設定ファイルで宣言され、ホスト、サーバーグループ、またはサーバーレベルで設定できます。
システムプロパティーは、起動中に JBoss EAP モジュール (ロギングマネージャーなど) が使用する JAVA_OPTS
で設定する必要があります。
9.1. スタンドアロンサーバーの JVM 設定
スタンドアロン JBoss EAP サーバーインスタンスの JVM 設定は、サーバーの起動前に JAVA_OPTS
環境変数を設定すると、起動時に宣言できます。
Linux で JAVA_OPTS
環境変数を設定する例は次のとおりです。
$ export JAVA_OPTS="-Xmx1024M"
Microsoft Windows 環境でも同じ設定を使用できます。
set JAVA_OPTS="Xmx1024M"
この代わりに、JVM に渡すオプションの例が含まれる EAP_HOME/bin
フォルダーの standalone.conf
ファイル (Windows Server の場合は standalone.conf.bat
) に JVM 設定を追加することもできます。
JAVA_OPTS
環境変数を設定すると、standalone.conf
からのデフォルト値がオーバーライドされるため、JBoss EAP の起動に問題が発生する可能性があります。
9.2. 管理対象ドメインの JVM 設定
JBoss EAP 管理対象ドメインでは、複数のレベルで JVM の設定を定義できます。特定ホストのカスタム JVM 設定を定義し、それらの設定をサーバーグループまたは個別のサーバーインスタンスに適用できます。
デフォルトでは、サーバーグループおよび各サーバーは親から JVM 設定を継承しますが、各レベルで JVM 設定をオーバーライドすることもできます。
domain.conf
の JVM 設定 (Windows Server の場合は domain.conf.bat
) は JBoss EAP ホストコントローラーの Java プロセスに適用されます。ホストコントローラーによって制御される個別の JBoss EAP サーバーインスタンスには適用されません。
9.2.1. ホストコントローラーの JVM 設定の定義
ホストコントローラーの JVM 設定を定義し、これらの設定をサーバーグループまたは各サーバーに適用することができます。JBoss EAP には default
の JVM 設定が含まれますが、以下の管理 CLI コマンドを実行すると、カスタム JVM 設定およびオプションがある production_jvm
という名前の JVM 設定が新たに作成されます。
/host=HOST_NAME/jvm=production_jvm:add(heap-size=2048m, max-heap-size=2048m, max-permgen-size=512m, stack-size=1024k, jvm-options=["-XX:-UseParallelGC"])
See Managed Domain JVM Configuration Attributes for descriptions of all available options.
また、JBoss EAP 管理コンソールで JVM 設定を作成および編集するには、Runtime タブを選択してから Hosts を選択し、編集するホストの JVM をクリックします。
これらの設定は host.xml
の <jvm>
タグ内に保存されます。
9.2.2. JVM 設定のサーバーグループへの適用
サーバーグループの作成時に、グループのすべてのサーバーが使用する JVM 設定を指定できます。以下の管理 CLI コマンドを実行すると、前の例で示された production_jvm
JVM 設定を使用する groupA
という名前のサーバーグループが作成されます。
/server-group=groupA:add(profile=default, socket-binding-group=standard-sockets) /server-group=groupA/jvm=production_jvm:add
サーバーグループのすべてのサーバーは、production_jvm
から JVM 設定を継承します。
サーバーグループレベルで特定の JVM 設定をオーバーライドすることもできます。たとえば、異なるヒープサイズを設定するには、以下のコマンドを使用します。
/server-group=groupA/jvm=production_jvm:write-attribute(name=heap-size,value="1024m")
上記コマンドの実行後、サーバーグループ groupA
は production_jvm
から JVM 設定を継承しますが、ヒープサイズの値は 1024m
にオーバーライドされます。
See Managed Domain JVM Configuration Attributes for descriptions of all available options.
また、Runtime タブを選択してから Server Groups を選択し、変更するサーバーグループの View をクリックすると、JBoss EAP 管理コンソールでサーバーグループの JVM 設定を編集できます。
サーバーグループの設定は domain.xml
に保存されます。
9.2.3. JVM 設定の個別のサーバーへの適用
デフォルトでは、個別の JBoss EAP サーバーインスタンスは属するサーバーグループの JVM 設定を継承します。しかし、継承した設定をホストコントローラーからの別の JVM 設定定義でオーバーライドしたり、特定の JVM 設定をオーバーライドすることもできます。
たとえば、以下のコマンドは 前の例で示したサーバーグループの JVM 定義をオーバーライドし、server-one
の JVM 設定を default
の JVM 定義に設定します。
/host=HOST_NAME/server-config=server-one/jvm=default:add
また、サーバーグループと同様に、サーバーレベルで特定の JVM 設定をオーバーライドすることもできます。たとえば、別のヒープサイズを設定するには、以下のコマンドを使用できます。
/host=HOST_NAME/server-config=server-one/jvm=default:write-attribute(name=heap-size,value="1024m")
See Managed Domain JVM Configuration Attributes for descriptions of all available options.
また、Runtime タブを選択してから Hosts を選択し、関連するホストを指定すると、JBoss EAP 管理コンソールでサーバーの JVM 設定を編集できます。サーバーを編集するには、サーバーを選択し、View をクリックします。
各サーバーのこれらの設定は host.xml
に保存されます。
9.3. JVM 状態の表示
ヒープおよびスレッドの使用状況など、スタンドアロンまたは管理対象ドメインサーバーの JVM リソースの状態は管理コンソールから表示できます。統計はリアルタイムでは表示されませんが、Refresh Results をクリックすると JVM リソースの最新の概要を表示できます。
スタンドアロン JBoss EAP サーバーの JVM の状態を表示するには、以下を行います。
- Runtime タブを選択した後、Standalone Server を選択します。Monitor の列で JVM を選択し、View をクリックします。
管理対象ドメインでの JBoss EAP サーバーの JVM の状態を表示するには、以下を行います。
- Runtime タブを選択した後、表示するサーバーグループとサーバーを選択します。Monitor 列で JVM を選択し、 View をクリックします。
以下のヒープ使用情報が表示されます。
- Max
- メモリー管理に使用できるメモリーの最大量。
- Used
- 使用されたメモリーの量。
- Committed
- JVM が使用するために確保されたメモリー量。
JVM のアップタイムやスレッドの使用状況などの他の情報も表示されます。
9.4. JVM の調整
JVM のパフォーマンスを最適化するための情報は、『Performance Tuning Guide』の「JVM Tuning」を参照してください。
9.5. 32 または 64 ビット JVM アーキテクチャーの指定
Hewlett-Packard HP-UX や Solaris などの一部の環境では、32 ビットまたは 64 ビット JVM の実行を指定するために -d32
または -d64
スイッチが使用されます。指定がない場合はデフォルトで 32 ビットが使用されます。
スタンドアロンサーバーでの 64 ビットアーキテクチャーの指定
-
EAP_HOME/bin/standalone.conf
を開きます。 -
以下の行を追加して、
-d64
オプションをJAVA_OPTS
に追加します。
JAVA_OPTS="$JAVA_OPTS -d64"
管理対象ドメインでの 64 ビットアーキテクチャーの指定
管理対象ドメインを実行している場合、サーバーインスタンスの他にホストとプロセスコントローラーの 64 ビット環境を指定できます。
64 ビット JVM で実行するよう、ホストおよびプロセスコントローラーを設定します。
-
EAP_HOME/bin/domain.conf
を開きます。 以下の行を追加して、
-d64
オプションをJAVA_OPTS
に追加します。必ずPROCESS_CONTROLLER_JAVA_OPTS
およびHOST_CONTROLLER_JAVA_OPTS
の設定部分の前に挿入してください。JAVA_OPTS="$JAVA_OPTS -d64"
domain.conf
の JVM オプションの例# # Specify options to pass to the Java VM. # if [ "x$JAVA_OPTS" = "x" ]; then JAVA_OPTS="-Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true" JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS -Djava.awt.headless=true" JAVA_OPTS="$JAVA_OPTS -Djboss.modules.policy-permissions=true" JAVA_OPTS="$JAVA_OPTS -d64" else echo "JAVA_OPTS already set in environment; overriding default settings with values: $JAVA_OPTS" fi
-
64 ビット JVM で実行するよう、サーバーインスタンスを設定します。
適切な JVM 設定で
-d64
を JVM オプションとして追加します。以下のコマンドは、default
の JVM 設定に追加されたことを表示します。/host=HOST_NAME/jvm=default:add-jvm-option(jvm-option="-d64")