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サブコマンドを実行する場合
環境変数VMARGSに-Xmxオプションを指定し、Javaヒープのサイズを大きくします。
下記はJavaヒープのサイズを256MBに指定する場合の、環境変数の設定例です。
VMARGS=-Xmx256m
管理コンソールでGlassFish ServerクラスターやGlassFish Serverインスタンスを起動する、またはstart-clusterサブコマンドを実行する場合
PCMIプロファイルを編集して、DASの環境変数VMARGSにJavaヒープのサイズを指定するJVMオプションを設定します。PCMIプロファイルの場所は以下です。
[運用資産格納ディレクトリー]\pcmi\profile\profile.xml
[運用資産格納ディレクトリー]/pcmi/profile/profile.xml
PCMIサービスの定義項目の環境変数については「10.3 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ヒープに指定するサイズの十分性は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. |
「JVMオプション」を参照し、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 |
「JVMオプション」を参照し、メタスペースのサイズをチューニングしてください。
ポイント
Javaヒープ/メタスペースに指定するサイズの目安は、以下のようになります。
予兆監視機能によりOM3204メッセージが出力されている場合は、「SIZE」として通知している値を、現在のサイズに追加して設定してください。
また、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 |
「7.6.1 GlassFishのスレッド数」を参考にシステムのリソース制限をチューニングしてください。