GlassFish ServerクラスターやGlassFish Serverインスタンスについて、コンソールやログに「OutOfMemoryError」と出力されるトラブルの対処方法について説明します。
リポジトリーの同期化処理でJavaヒープが不足している場合
GlassFish Serverクラスター、GlassFish Serverインスタンス起動時に、以下のメッセージを出力してコマンドが異常終了した場合は、リポジトリーの同期化で使用する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オプション設定」を参照してください。
GlassFish Server管理コンソールでGlassFish ServerクラスターやGlassFish Serverインスタンスを起動する、またはstart-clusterサブコマンドを実行する場合
PCMIプロファイルを編集して、DASの環境変数VMARGSにJavaヒープのサイズを指定するJVMオプションを設定します。PCMIプロファイルの場所は以下です。
[運用資産格納ディレクトリー]\pcmi\profile\profile.xml
[運用資産格納ディレクトリー]/pcmi/profile/profile.xml
PCMIサービスの定義項目の環境変数については「9.2 PCMIサービスの定義項目」の「環境変数」を参照してください。
例として、Javaヒープのサイズを256MBにするには、以下の太字部分のように設定します。
<?xml version="1.0" encoding="UTF-8"?>
<Profile xmlns="http://pcmi.appsrv.fujitsu.com/Profile">
:
<EnvironmentVariables>
<Variable>VMARGS=-Xmx256m</Variable>
</EnvironmentVariables>
</Profile>
上記の例では、-Xmx256mを指定していますが、Javaヒープに指定するサイズの十分性はGlassFish Serverクラスターごとに確認してください。Javaヒープに指定するサイズの目安は、以下の計算式で算出できます。
起動対象のGlassFish Serverクラスターに配備しているアプリケーションのサイズの合計(注) × 10
(注) warファイル等のサイズではなく、展開後のファイルの合計サイズです。GlassFish Serverクラスターに複数のアプリケーションが配備される場合は、配備したすべてのアプリケーションのファイルの合計サイズを使用してください。
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. |
DASのserver.logに出力されている場合、「6.1.2 Java VMのヒープ領域サイズ/メタスペースサイズ」を参考にJavaヒープのサイズをチューニングしてください。
GlassFish Serverインスタンスの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 |
DASのserver.logに出力されている場合、「6.1.2 Java VMのヒープ領域サイズ/メタスペースサイズ」を参考にメタスペースのサイズをチューニングしてください。
GlassFish Serverインスタンスのserver.logに出力されている場合、「6.3.2 Java VMのヒープ領域サイズ/メタスペースサイズ」を参考にメタスペースのサイズをチューニングしてください。
ポイント
GlassFish Serverクラスターの性能情報をロギングする機能(モニタロギング)があります。モニタロギングのJavaVM情報ログファイル(monitor-jvm.log)にメタスペースのメモリ使用量を指定された時間間隔で出力させることができます。出力された値を参考にメタスペースのサイズをチューニングしてください。
参考
プロセス(スレッド)の最大数に達している場合
次のようなメッセージがconsole.logやserver.logに出力されている場合、1ユーザーが実行できるプロセス(スレッド)の最大数に達し、スレッド生成に失敗している可能性があります。スタックトレースには「java.lang.Thread.start」という文字列が含まれている場合があります。
console.log表示例
VM is terminated by occurred OutOfMemoryError on C heap. |
server.log表示例
java.lang.OutOfMemoryError: unable to create new native thread |
「6.19.1 GlassFishのスレッド数」を参考にシステムのリソース制限をチューニングしてください。