IJServerクラスタやサーバーインスタンスについて、コンソールやログに「OutOfMemoryError」と出力されるトラブルの対処方法について説明します。
リポジトリの同期化処理でJavaヒープが不足している場合
IJServerクラスタ、サーバーインスタンス起動時に、以下のメッセージを出力してコマンドが異常終了した場合は、リポジトリの同期化で使用するJavaヒープが不足している可能性があります。
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space |
このときスタックトレースには、以下のメッセージが表示されます。
com.sun.enterprise.admin.cli.cluster.SynchronizeInstanceCommand.synchronizeInstance |
以下の対処を行い、Javaヒープのサイズを大きくしてからコマンドを再度実行してください。
start-local-instanceサブコマンドを実行する場合
コマンドプロセスのJavaVMオプション設定で-Xmxオプションを指定し、Javaヒープのサイズを大きくします。
設定についての詳細は「コマンドプロセスのJavaVMオプション設定」を参照してください。
Interstage Java EE 7管理コンソールでIJServerクラスタやサーバーインスタンスを起動する、またはstart-clusterサブコマンドを実行する場合
PCMIプロファイルを編集して、Interstage Java EE 7 DASサービスの環境変数VMARGSにJavaヒープのサイズを指定するJVMオプションを設定します。PCMIプロファイルの場所は以下です。
[Java EE 7共通ディレクトリ]\pcmi\isje7\profile\profile.xml
[Java EE 7共通ディレクトリ]/pcmi/isje7/profile/profile.xml
PCMIサービスの定義項目の環境変数については「8.2 PCMIサービスの定義項目」の「環境変数」を参照してください。
例として、Javaヒープのサイズを256MBにするには、以下の太字部分のように設定します。
<?xml version="1.0" encoding="UTF-8"?> <Profile xmlns="http://pcmi.interstage.fujitsu.com/Profile"> : <EnvironmentVariables> <Variable>VMARGS=-Xmx256m</Variable> </EnvironmentVariables> </Profile>
上記の例では、-Xmx256mを指定していますが、Javaヒープに指定するサイズの十分性はIJServerクラスタごとに確認してください。Javaヒープに指定するサイズの目安は、以下の計算式で算出できます。
起動対象のIJServerクラスタに配備しているアプリケーションのサイズの合計(注) × 10
(注) warファイル等のサイズではなく、展開後のファイルの合計サイズです。IJServerクラスタに複数のアプリケーションが配備される場合は、配備したすべてのアプリケーションのファイルの合計サイズを使用してください。
Javaヒープのサイズが不足している場合
次のようなメッセージがconsole.logやserver.logに出力されている場合、Javaヒープが不足している可能性があります。
console.log表示例
VM is terminated by occurred OutOfMemoryError on Java heap. |
server.log表示例1
There are possibilities of OutOfMemoryError because of the lack of the memory. |
server.log表示例2
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space. |
Interstage Java EE 7 DASサービスのserver.logに出力されている場合、「6.1.2 Java VMのヒープ領域サイズ/メタスペースサイズ」を参考にJavaヒープのサイズをチューニングしてください。
サーバーインスタンスのserver.logに出力されている場合、「6.3.2 Java VMのヒープ領域サイズ/メタスペースサイズ」を参考にJavaヒープのサイズをチューニングしてください。
メタスペースのサイズが不足している場合
次のようなメッセージがconsole.logやserver.logに出力されている場合、メタスペースが不足している可能性があります。
console.log表示例
VM is terminated by occurred OutOfMemoryError on Metaspace. |
server.log表示例1
There are possibilities of OutOfMemoryError because of the lack of the Metaspace |
server.log表示例2
Exception in thread "main" Exception in thread "Thread-1" java.lang.OutOfMemoryError: Metaspace |
Interstage Java EE 7 DASサービスのserver.logに出力されている場合、「6.1.2 Java VMのヒープ領域サイズ/メタスペースサイズ」を参考にメタスペースのサイズをチューニングしてください。
サーバーインスタンスのserver.logに出力されている場合、「6.3.2 Java VMのヒープ領域サイズ/メタスペースサイズ」を参考にメタスペースのサイズをチューニングしてください。
ポイント
Javaヒープ/メタスペースに指定するサイズの目安は、以下のようになります。
予兆監視機能によりOM3204メッセージが出力されている場合は、「SIZE」として通知している値を、現在のサイズに追加して設定してください。
参考
「チューニングガイド」の「Javaヒープ、メタスペースとガーベジコレクション」
「11.60.8 OM3200番台のメッセージ」のISJE7_OM3204メッセージ
また、IJServerクラスタの性能情報をロギングする機能(モニタロギング)があります。モニタロギングのJavaVM情報ログファイル(monitor-jvm.log)にメタスペースのメモリ使用量を指定された時間間隔で出力させることができます。出力された値を参考にメタスペースのサイズをチューニングしてください。
参考