この場合以下のような事象になる可能性があります。
・ログインできない
・WebOTXからのレスポンスが返ってこない
・アプリケーションの反応がない
・画面遷移しない
・白画面になる(画面全体、もしくは一部が何も表示されない)
原因は、EJBが動作するドメインでの以下の問題が考えられます。
① JDBCのコネクションプールが不足している
WebOTXのログ(※1、※3)に以下が出力されている場合は、本原因が考えられます。
[年日時] INFO JDBC-DATASOURCE - NUMBER OF CONNECTIONS(x) OVER MINPOOLSIZE(y) poolName=[コネクションプール名]
※x, y, zは、数字です。
上記ログは、アプリケーションの動作スレッドに対してJDBCデータソースの最小プールサイズが少ないときに出力されるメッセージで、JDBCコネクションの取得に時間がかかっている可能性があります。
JDBCデータソースの最小プールサイズや初期プールサイズをアプリケーションの動作スレッドよりも多くして動作が改善するか、ご確認をお願いします。
設定方法については以下のマニュアルを確認してください。
[V9]
Application Server > 高度な管理と運用サイクルガイド > 2.7. JDBCデータソース
[V10]
Application Server > 構築・運用 > チューニング > 7. JDBCデータソース
② OutOfMemoryErrorが発生している
発生した時、OutOfMemoryErrorが、WebOTXのログ(※1、※2、※3)またはイベントログに出力されます。
ヒープメモリの使用量が最大ヒープサイズを超えたことが原因であるため、最大ヒープサイズの拡張を検討してください。
最大ヒープサイズの拡張方法は以下のマニュアルを参照してください。
[V9]
Application Server > 高度な管理と運用サイクルガイド > 2.1.2.1. ドメインエージェントプロセスのヒープサイズの見直し
Application Server > 高度な管理と運用サイクルガイド > 2.1.2.2. サーバプロセスのヒープサイズ・スタックサイズの見直し
[V10]
Application Server > 構築・運用 > チューニング > 1.2.1. ヒープ領域に対するチューニング
Application Server > 構築・運用 > チューニング > 1.2.2. 非ヒープ領域に対するチューニング
また、ヒープダンプを採取してヒープメモリを大量に消費しているオブジェクトを特定することができます。
原因のクラスを特定したい場合、または最大ヒープサイズの拡張で改善しない場合は、ヒープダンプを採取して、大量に消費しているオブジェクトを特定してください。
以下、ヒープダンプの設定手順です。
- 手順
OutOfMemoryErrorが再び発生した時、自動的にヒープダンプを採取する設定です。
1.運用管理コマンドを起動
運用管理コマンドを実行して、ドメインにログインします。
otxadmin > login --user <ユーザ名> --password <パスワード> --host <ホスト名> --port <ポート番号>
2.ヒープダンプ出力の設定
以下の運用管理コマンドを実行します。
設定:
otxadmin> create-jvm-options "-XX\:+HeapDumpOnOutOfMemoryError"
<プロセスグループの場合>
(1)既に設定済みの値を取得してください。
otxadmin> get tpsystem.applicationGroups.{アプリケーショングループ名}.processGroups.{プロセスグループ名}.otherArguments
(2)、(1)で取得した値と併せて設定を行ってください。
otxadmin> set-pg-javavm-option --javavmopother "-XX:+HeapDumpOnOutOfMemoryError {(1)で取得した値}" --apgroup {アプリケーショングループ名} {プロセスグループ名}
3.設定を行ったらドメインを再起動します。
4.OutOfMemoryErrorが発生したとき以下のディレクトリにヒープダンプを出力します。
[WebOTXインストールディレクトリ]/domains/[ドメイン名]/config
<プロセスグループの場合>
[WebOTXインストールディレクトリ]/domains/[ドメイン名]/logs/tpsystem
拡張子 hprof のファイルがヒープダンプです。
③ アプリケーションでエラーまたは遅延が発生している。
アプリケーション側のログがあれば原因を特定しエラーを解消してください。
特定が困難である場合は、現象発生時にスレッドダンプを10秒間隔で5回採取してアプリケーション開発元へ送付してください。
スレッドダンプの採取方法は以下のマニュアルを参照してください。
[V9]
Application Server > トラブルシューティングガイド > 1.1.3. Java VMのスレッドダンプ取得
[V10]
Application Server > トラブルシューティング > 対処方法と情報採取 > 1.3. Java VMのスレッドダンプ取得
④ プロセスグループの多重度数が不足している
クライアントからの接続数が、WebOTX側で設定しているスレッド上限を超えると、超えた分の接続は待ち状態になります。
原因が上記の①~③以外である場合、本原因の可能性があります。
プロセスグループのスレッド制御の設定でスレッド数を増やすチューニングを行ってください。設定箇所は各バージョンのマニュアルで以下の場所を確認してください。
また、メモリの空き状況やCPU使用率に余裕が無い場合に多重度を増やすと性能が劣化する可能性がありますので注意してください。
[V9]
Application Server > ドメイン構築・基本設定ガイド > 7.1.3.3. 設定値の説明
[V10]
Application Server > 構築・運用 > ドメインの構築 > 4.3.3. 設定値の説明
[プロセスグループの場合]
[V9]
Application Server > リファレンス集 運用管理・設定編 > 1.10. Object Broker > 1.10.1.1. Object Broker共通の設定項目一覧 > プールスレッド数
[V10]
Application Server > リファレンス > 設定 > 10.1.1. Object Broker共通の設定項目一覧 > プールスレッド数
※1 agent.log
[V9]
[WebOTXインストールディレクトリ]/domains/[ドメイン名]/logs/webotx_agent.log
[V10]
[WebOTXインストールディレクトリ]/domains/[ドメイン名]/logs/agent.log
※2 server.log
[WebOTXインストールディレクトリ]/domains/[ドメイン名]/logs/server.log
※3 プロセスグループの場合のログ
[WebOTXインストールディレクトリ]/domains/[ドメイン名]/logs/tpsystem/アプリケーショングループ名/プロセスグループ名/*.log
[WebOTXインストールディレクトリ]/domains/[ドメイン名]/logs/tpsystem/アプリケーショングループ名/プロセスグループ名/save/*.log
【対象製品】Application Server
【確認済みのバージョン】V9以降
【確認済みのエディション】WebOTX Application Server Standard/Enterprise
【確認済みの対象OS】すべて
【確認済みのJavaバージョン】すべて
【コンポーネント】Webコンテナ
【カテゴリー】トラブルシューティング