第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 ファイルに JVM 設定を追加することもできます。

警告

JAVA_OPTS 環境変数を設定すると、standalone.conf からのデフォルト値がオーバーライドされるため、JBoss EAP の起動に問題が発生する可能性があります。

9.2. 管理対象ドメインの JVM 設定

JBoss EAP 管理対象ドメインでは、複数のレベルで JVM の設定を定義できます。特定ホストのカスタム JVM 設定を定義し、それらの設定をサーバーグループまたは個別のサーバーインスタンスに適用できます。

デフォルトでは、サーバーグループおよび各サーバーは親から JVM 設定を継承しますが、各レベルで JVM 設定をオーバーライドすることもできます。

注記

domain.conf の JVM 設定は 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"]
)

また、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")

上記コマンドの実行後、サーバーグループ groupAproduction_jvm から JVM 設定を継承しますが、ヒープサイズの値は 1024m にオーバーライドされます。

また、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")

また、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. 32 または 64 ビット JVM アーキテクチャーの指定

Hewlett-Packard HP-UX や Solaris などの一部の環境では、32 ビットまたは 64 ビット JVM の実行を指定するために -d32 または -d64 スイッチが使用されます。指定がない場合はデフォルトで 32 ビットが使用されます。

スタンドアロンサーバーでの 64 ビットアーキテクチャーの指定

  1. EAP_HOME/bin/standalone.conf を開きます。
  2. 以下の行を追加して、-d64 オプションを JAVA_OPTS に追加します。
JAVA_OPTS="$JAVA_OPTS -d64"

管理対象ドメインでの 64 ビットアーキテクチャーの指定

管理対象ドメインを実行している場合、サーバーインスタンスの他にホストとプロセスコントローラーの 64 ビット環境を指定できます。

  1. 64 ビット JVM で実行するよう、ホストおよびプロセスコントローラーを設定します。

    1. EAP_HOME/bin/domain.conf を開きます。
    2. 以下の行を追加して、-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

  2. 64 ビット JVM で実行するよう、サーバーインスタンスを設定します。

    適切な JVM 設定で -d64 を JVM オプションとして追加します。以下のコマンドは、 default の JVM 設定に追加されたことを表示します。

    /host=HOST_NAME/jvm=default:add-jvm-option(jvm-option="-d64")