第12章 JVM

12.1. JVM について

12.1.1. JVM 設定について

Java Virtual Machine (JVM) の設定は、管理対象ドメインインスタンスとスタンドアロンサーバーインスタンスでは異なります。監理対象ドメインでは、JVM 設定が host.xml および domain.xml 設定ファイルで宣言され、サーバープロセスを起動および停止するドメインコントローラーコンポーネントにより決定されます。スタンドアロンサーバーインスタンスでは、サーバー起動プロセスで起動時にコマンドライン設定を渡すことができます。これらは、管理コンソールのコマンドラインまたは System Properties 画面で宣言できます。
管理対象ドメイン

監理対象ドメインの重要な機能は、JVM 設定を複数のレベルで定義できることです。サーバーグループまたはサーバーインスタンスによって、ホストレベルでカスタム JVM 設定を指定できます。特別な子要素は親設定よりも優先され、グループまたはホストレベルで除外せずに特定のサーバー設定を宣言できます。これにより、設定が設定ファイルで宣言されるか、実行時に渡されるまで、親設定は他のレベルで継承できます。

例12.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 メガバイトの最大ヒープサイズを宣言しています。このグループに属するすべてのサーバーは、これらの設定を継承します。これらの設定は、グループ全体、ホスト、または個別サーバーで変更できます。

例12.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-binding-group ref="standard-sockets" port-offset="150"/>
       </server>
       <server name="server-three" group="other-server-group" auto-start="false">
           <socket-binding-group ref="standard-sockets" port-offset="250"/>
       </server>
</servers>

このインスタンスでは、server-two おちう名前のサーバーが、main-server-group という名前のサーバーグループに属し、default JVM グループから JVM 設定を継承します。以前の例では、main-server-group のメインヒープサイズは 512 メガバイトに設定されていました。256 メガバイトの小さい最大ヒープサイズを宣言すると、server-twodomain.xml 設定よりも優先され、必要に応じてパフォーマンスを微調整できます。
実行時のスタンドアロンサーバー設定

スタンドアロンサーバーインスタンスの JVM 設定は、実行時にコマンドライン引数として宣言できます。または、JVM 設定は、JVM に渡すオプションのサンプルが含まれる EAP_HOME/bin フォルダーにある standalone.conf ファイルに追加できます。

12.1.2. 管理コンソールで JVM の状態を表示する

スタンドアロンサーバーまたは管理ドメインに対し、Java 仮想マシン (JVM) の状態を管理コンソールに表示することができます。コンソールにはヒープ使用量や非ヒープ使用量、サーバーのスレッド使用量がメガバイト単位で表示されます。統計はリアルタイムで表示されませんが、コンソールの表示を更新すると 最新の JMV リソースの概要が表示されます。
JVM の状態には次の値が表示されます。

表12.1 JVM 状態属性

タイプ 説明
Max メモリー管理に使用できるメモリーの最大量 (バイト単位) です。
Used 使用されたメモリーの量 (メガバイト単位) です。
Committed Java 仮想マシンが使用するために確保されたメモリー量 (バイト単位) です。
Init メモリー管理に関し、Java 仮想マシンが最初にオペレーティングシステムより要求するバイト単位のメモリー量です。
  • JVM の状態の表示

    JVM の状態はスタンドアロンサーバーか管理ドメインに表示することができます。
    • スタンドアロンサーバーインスタンスに対して JVM の状態を表示する

      Runtime 画面上の Server Status メニューより JVM Status を選択します。
      スタンドアロンサーバーインスタンスの JVM の状態

      図12.1 スタンドアロンサーバーインスタンスの JVM の状態

    • 管理ドメインに対して JVM の状態を表示する

      ランタイムスクリーンのドメイン状態メニューより JVM 状態を選択します。
    • 管理ドメインはサーバーグループの全サーバーインスタンスを表示できますが、サーバーメニューより選択し、一度に 1 つのサーバーのみを表示することができます。サーバーグループの他のサーバーの状態を表示するには、画面の左上にあるドロップダウンボックスをクリックしてグループに表示されるホストとサーバーより選択を行い、Done ボタンをクリックして結果をロードします。
      管理ドメインの JVM 状態サーバーメニュー

      図12.2 管理ドメインの JVM 状態サーバーメニュー

結果

サーバーインスタンスに対する JVM 設定の状態が表示されます。