第16章 JVM
16.1. JVM
16.1.1. JVM 設定
host.xml
および domain.xml
設定ファイルで宣言され、サーバープロセスを起動および停止するドメインコントローラーコンポーネントにより決定されます。スタンドアロンサーバーインスタンスでは、サーバー起動プロセスで起動時にコマンドライン設定を渡すことができます。これらは、管理コンソールのコマンドラインまたは System Properties 画面で宣言できます。
管理対象ドメインの重要な機能は、JVM 設定を複数のレベルで定義できることです。サーバーグループまたはサーバーインスタンスによって、ホストレベルでカスタム JVM 設定を指定できます。特別な子要素は親設定よりも優先され、グループまたはホストレベルで除外せずに特定のサーバー設定を宣言できます。これにより、設定が設定ファイルで宣言されるか、実行時に渡されるまで、親設定は他のレベルで継承できます。
例16.1 ドメイン設定ファイルの JVM 設定
domain.xml
設定ファイルの、サーバーグループに対する JVM 宣言を示しています。
<server-groups> <server-group name="main-server-group" profile="default"> <jvm name="default"> <heap size="64m" max-size="512m"/> </jvm> <socket-binding-group ref="standard-sockets"/> </server-group> <server-group name="other-server-group" profile="default"> <jvm name="default"> <heap size="64m" max-size="512m"/> </jvm> <socket-binding-group ref="standard-sockets"/> </server-group> </server-groups>
main-server-group
という名前のサーバーグループが 64 メガバイトのヒープサイズと 512 メガバイトの最大ヒープサイズを宣言しています。このグループに属するすべてのサーバーは、これらの設定を継承します。これらの設定は、グループ全体、ホスト、または個別サーバーで変更できます。
例16.2 ホスト設定ファイルのドメイン設定
host.xml
設定ファイルの、サーバーグループに対する JVM 宣言を示しています。
<servers> <server name="server-one" group="main-server-group" auto-start="true"> <jvm name="default"/> </server> <server name="server-two" group="main-server-group" auto-start="true"> <jvm name="default"> <heap size="64m" max-size="256m"/> </jvm> <socket-bindings port-offset="150"/> </server> <server name="server-three" group="other-server-group" auto-start="false"> <socket-bindings port-offset="250"/> </server> </servers>
server-two
という名前のサーバーが、main-server-group
という名前のサーバーグループに属し、default
JVM グループから JVM 設定を継承します。前の例では、main-server-group
のメインヒープサイズは 512 メガバイトに設定されていました。これよりも小さい 256 メガバイトを最大ヒープサイズとして宣言すると、server-two
が domain.xml
設定よりも優先され、必要に応じてパフォーマンスを微調整できます。
スタンドアロンサーバーインスタンスの JVM 設定を実行時に宣言するには、サーバーを起動する前に JAVA_OPTS
環境変数を設定します。以下は Linux のコマンドラインで JAVA_OPTS
環境変数を設定する一例です。
[user@host bin]$ export JAVA_OPTS="-Xmx1024M"
C:\> set JAVA_OPTS="Xmx1024M"
EAP_HOME/bin
フォルダーにある standalone.conf
ファイルに JVM 設定を追加することも可能です。
警告
16.1.2. 管理コンソールでの JVM 状態の表示
タイプ | 説明 |
---|---|
Max | メモリー管理に使用できる最大メモリー容量。使用可能な最大メモリー容量は薄い灰色のバーで表示されます。 |
Used | 使用中のメモリー容量。使用中のメモリー容量は濃い灰色のバーで表示されます。 |
Committed | Java 仮想マシンが使用するために確保されたメモリー容量。確保されたメモリーは濃い灰色で表示されます。 |
Init | メモリー管理のために Java 仮想マシンが最初にオペレーティングシステムからリクエストするメモリー容量。これは濃い灰色のバーで表示されます。 |
手順16.1 管理コンソールでの JVM 状態の表示
スタンドアロンサーバーインスタンスの JVM 状態 の表示
画面の上部からタブを選択します。 メニューを展開したら メニューを展開します。 を選択します。管理対象ドメインの JVM 状態の表示
画面の上部からタブを選択します。 メニューを展開したら メニューを展開します。 を選択します。
- 管理対象ドメインはサーバーグループのすべてのサーバーインスタンスを表示できますが、サーバーメニューから選択した 1 つのサーバーのみを一度に表示できます。サーバーグループの他のサーバーの状態を表示するには、画面の左にあるをクリックしてグループに表示されるホストとサーバーから選択します。必要なサーバーまたはホストを選択すると、JVM の詳細が変更されます。 をクリックして終了します。
サーバーインスタンスに対する JVM 設定の状態が表示されます。
16.1.3. JVM の設定
例16.3 <jvm-options> の使用
<jvm name="default"> <heap size="1303m" max-size="1303m"/> <permgen max-size="256m"/> <jvm-options> <option value="-XX:+UseCompressedOops"/> </jvm-options> </jvm>
CLI を使用して JVM を設定するには、以下の構文を使用します。
# cd /server-group=main-server-group/jvm=default # :add-jvm-option(jvm-option="-XX:+UseCompressedOops") { "outcome" => "success", "result" => undefined, "server-groups" => {"main-server-group" => {"host" => {"master" => { "server-one" => {"response" => { "outcome" => "success", "response-headers" => { "operation-requires-restart" => true, "process-state" => "restart-required" } }}, "server-two" => {"response" => { "outcome" => "success", "response-headers" => { "operation-requires-restart" => true, "process-state" => "restart-required" } }} }}}} } # :read-resource # Expected Result: [domain@localhost:9999 jvm=default] :read-resource { "outcome" => "success", "result" => { "agent-lib" => undefined, "agent-path" => undefined, "env-classpath-ignored" => undefined, "environment-variables" => undefined, "heap-size" => "1303m", "java-agent" => undefined, "java-home" => undefined, "jvm-options" => ["-XX:+UseCompressedOops"], "max-heap-size" => "1303m", "max-permgen-size" => "256m", "permgen-size" => undefined, "stack-size" => undefined, "type" => undefined } }
jvm-options エントリーを削除するには、次の構文を使用します。
# cd /server-group=main-server-group/jvm=default # :remove-jvm-option(jvm-option="-XX:+UseCompressedOops") # Expected Result: [domain@localhost:9999 jvm=default] :remove-jvm-option(jvm-option="-XX:+UseCompressedOops") { "outcome" => "success", "result" => undefined, "server-groups" => {"main-server-group" => {"host" => {"master" => { "server-one" => {"response" => { "outcome" => "success", "response-headers" => { "operation-requires-restart" => true, "process-state" => "restart-required" } }}, "server-two" => {"response" => { "outcome" => "success", "response-headers" => { "operation-requires-restart" => true, "process-state" => "restart-required" } }} }}}} }