これは、JDK 1.6 の Java VM に組み込まれている GC チューニング機構が影響しています。
簡潔に言えば、GC 処理に時間が掛かり過ぎている状態になると、それを Java VM 側が検知し、OutOfMemoryError と判断して例外を発行する仕組みです。
これがデフォルトで有効になっているため、本事象が発生しています。
具体的にはJava ヒープ領域が不足しているために、わずかな空き領域で処理を継続するために、フル GC を含む GC 処理が頻繁に行われている可能性があります。
回避方法の一つは、本チューニング機構を Java VM オプション指定で無効にすることです。
ログインが可能な状態であれば、運用管理コマンド(otxadmin)で下記のサブコマンドを実施することで、再起動後に設定が反映されます。
otxadmin> create-jvm-options "-XX\:-UseGCOverheadLimit"
ログインできない状態の場合、直接該当する設定ファイル内の定義を編集する必要があります。
一旦、ドメインを停止し、次のファイルを編集します。
{WebOTXインストールディレクトリ}/domains/{ドメイン名}/config/domain.xml
ファイル内の次の定義がある箇所において、下線部の箇所を追加してください。
<java-config classpath-suffix="" ...>
<!-- various required jvm-options -->
<!-- ant setup option -->
<system-jvm-options>-server</system-jvm-options>
:
<system-jvm-options>...</system-jvm-options>
<jvm-options>-XX:-UseGCOverheadLimit</jvm-options>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
</java-config>
修正後、WebOTX Application Serverを再起動して下さい。
再起動後も同事象が発生する場合には、メモリ不足となっている箇所を GC ログなどから特定し、根本的なメモリ不足の解決をしてください。
【対象製品】Application Server
【確認済みのバージョン】V7 V8
【確認済みのエディション】すべて
【確認済みの対象OS】すべて
【確認済みのJavaバージョン】Java SE 6.0
【コンポーネント】運用管理
【カテゴリー】トラブルシューティング