ログファイルに採取した性能情報の分析方法と対処方法について説明します。
■出力情報
モニタ情報ログファイルは、以下のようにCSV形式(カンマ区切りで並べた形式)で出力します。
D1,D2,D3,D4,D5,・・・  | 
■性能情報の項目内容
Interstage管理コンソールで参照可能なモニタ情報はIJServer起動時からの集計データを表示していましたが、J2EEモニタロギング機能で採取されるデータは性能ボトルネックなどの解析に使用可能とするためデータ採取区間内での集計データ(データ採取時間帯での最大値など)を採取します。
また、Interstage管理コンソールの場合、一部のデータ(JavaVMなど)を除いてIJServer全体のデータを集計してモニタ情報として参照できましたが、J2EEモニタロギング機能では以下のようにIJServerプロセスごとのデータを採取可能であるため、より詳細な分析が可能となります。
  | Interstage管理コンソール  | J2EEモニタロギング  | 
|---|---|---|
上限値  | IJServer全体で使用可能な上限値  | 各プロセスで使用可能な上限値  | 
最大値  | IJServer全体の最大値  | 各プロセスの最大値  | 
最小値  | IJServer全体の最小値  | 各プロセスの最小値  | 
平均値  | IJServer全体の平均値  | 各プロセスの平均値  | 
現在値  | IJServer全体の現在値  | 各プロセスの現在値  | 
性能情報中の日時情報は、以下の値が“DD/MM/YYYY hh:mm:ss:SSS”のフォーマットで出力されます。
DD  | 日を2桁の数字(01~31)で表示します。  | 
MM  | 月を2桁の数字(01~12)で表示します。  | 
YYYY  | 年を4桁の数字(0000~9999)で表示します。  | 
hh  | 時を2桁の数字(00~23)で表示します。  | 
mm  | 分を2桁の数字(00~59)で表示します。  | 
ss  | 秒を2桁の数字(00~59)で表示します。  | 
SSS  | ミリ秒を3桁の数字(000~999)で表示します。  | 
例) 24/06/2006 01:00:00:200
性能情報中の「ミリ秒」単位は、以下の値が“h:mm:ss:SSS”のフォーマットで出力されます。
h  | 時を可変桁の数字(0~)で表示します。値が0の場合は“0”と表示します。  | 
mm  | 分を2桁の数字(00~59)で表示します。  | 
ss  | 秒を2桁の数字(00~59)で表示します。  | 
SSS  | ミリ秒を3桁の数字(000~999)で表示します。  | 
例) 0:00:00:200
性能情報として出力される項目について説明します。各表の項番に書かれているD1、D2、・・・は、CSV形式で出力されるD1、D2、・・・に対応しています。
項番  | 項目名  | 単位  | 内容  | 
|---|---|---|---|
D1  | データ採取開始日時  | -  | 当該レコードの性能情報の測定を開始した日時  | 
D2  | データ採取終了日時  | -  | 当該レコードの性能情報の測定を終了した日時  | 
D3  | プロセス通番  | -  | IJServerが起動したプロセスの通番  | 
D4  | プロセスID  | -  | 測定対象のIJServerのプロセスID  | 
D5  | コンテナタイプ  | -  | JavaVMのコンテナタイプ。以下のいずれかを出力します。  | 
D6  | JavaVMの運用時間  | -  | IJServer起動時からの総時間  | 
D7  | ヒープ現在使用量  | KB  | ログ採取時のJavaVMのヒープ使用量  | 
D8  | ヒープ最小使用量  | KB  | 測定時間内でのJavaVMの最小ヒープ使用量 (注1)  | 
D9  | ヒープ最大使用量  | KB  | 測定時間内でのJavaVMの最大ヒープ使用量 (注1)  | 
D10  | ヒープ上限値  | KB  | ヒープサイズの上限値(-Xmxオプションで指定した値とほぼ同等の値)  | 
D11  | メタスペース現在使用量  | KB  | ログ採取時のJavaVMのメタスペース使用量  | 
D12  | メタスペース最小使用量  | KB  | 測定時間内でのJavaVMの最小メタスペース使用量 (注1)  | 
D13  | メタスペース最大使用量  | KB  | 測定時間内でのJavaVMの最大メタスペース使用量 (注1)  | 
D14  | メタスペース上限値  | KB  | メタスペースサイズの上限値(-XX: MaxMetaspaceSizeオプションで指定した値とほぼ同等の値)(注2)  | 
D15  | ガーベジコレクション発生回数  | 回  | 測定時間内でのガーベジコレクションの発生回数 (注3)  | 
D16  | ガーベジコレクション処理トータル時間  | ミリ秒  | 測定時間内でのガーベジコレクションの処理時間の合計値 (注3)  | 
注1) JavaVMヒープ/メタスペースの最小値/最大値については、Interstage管理コンソールのモニタ表示画面と同様に、3秒間隔でサンプリングした値の最小値/最大値を出力します。
注2) -XX: MaxMetaspaceSizeオプションが指定されていない場合は0が出力されます。0は無制限を意味します。
注3) ガーベジコレクションは、Full GCの情報を使用しています。
項番  | 項目名  | 単位  | 内容  | 
|---|---|---|---|
D1  | データ採取開始日時  | -  | 当該レコードの性能情報の測定を開始した日時  | 
D2  | データ採取終了日時  | -  | 当該レコードの性能情報の測定を終了した日時  | 
D3  | プロセス通番  | -  | IJServerが起動したプロセスの通番  | 
D4  | プロセスID  | -  | 測定対象のIJServerのプロセスID  | 
D5  | データソース名  | -  | データソース名  | 
D6  | 物理コネクション現在数  | 個  | ログ採取時に確立されている物理コネクション数 (注1)  | 
D7  | 物理コネクション最小数  | 個  | 測定時間内で同時に確立したデータベースの最小物理コネクション数 (注1)  | 
D8  | 物理コネクション最大数  | 個  | 測定時間内で同時に確立したデータベースの最大物理コネクション数 (注1)  | 
D9  | 物理コネクション上限数  | 個  | 確立可能なデータベースへの上限物理コネクション数 (注1)  | 
D10  | 使用コネクション現在数  | 個  | ログ採取時に使用されているコネクション数 (注1)  | 
D11  | 使用コネクション最小数  | 個  | 測定時間内でプーリングされているコネクションで同時に使用された最小コネクション数 (注1)  | 
D12  | 使用コネクション最大数  | 個  | 測定時間内でプーリングされているコネクションで同時に使用された最大コネクション数 (注1)  | 
D13  | 累積コネクション待ち回数  | 回  | 測定時間内でコネクション待ちとなった回数(コネクション待ちタイムアウトが発生した場合は測定対象外) (注2)  | 
D14  | 平均コネクション待ち時間  | ミリ秒  | 測定時間内でコネクション待ちとなった時の平均待ち時間(コネクション待ちタイムアウトが発生した場合は測定対象外) (注2)  | 
D15  | コネクション待ち最小時間  | ミリ秒  | 測定時間内でコネクション待ちとなった時の最小待ち時間(コネクション待ちタイムアウトが発生した場合は測定対象外) (注2)  | 
D16  | コネクション待ち最大時間  | ミリ秒  | 測定時間内でコネクション待ちとなった時の最大待ち時間(コネクション待ちタイムアウトが発生した場合は測定対象外) (注2)  | 
D17  | コネクション待ち現在スレッド数  | 個  | ログ採取時にコネクション待ちとなっているスレッド数 (注2)  | 
D18  | コネクション待ち最小スレッド数  | 個  | 測定時間内でコネクション待ちとなった時の最小待ちスレッド数 (注2)  | 
D19  | コネクション待ち最大スレッド数  | 個  | 測定時間内でコネクション待ちとなった時の最大待ちスレッド数 (注2)  | 
D20  | コネクション待ちタイムアウト回数  | 回  | 測定時間内でコネクション待ちとなった時のコネクション待ちタイムアウトが発生した回数 (注2)  | 
D21  | 物理コネクション確立回数  | 回  | 測定時間内でデータベースの物理コネクションを確立した回数 (注2)  | 
D22  | 物理コネクション最大確立時間  | ミリ秒  | 測定時間内でプーリングしていたコネクションのデータベースへの最大確立時間 (注2)  | 
D23  | アイドルタイムアウトによるクローズ回数  | 回  | 測定時間内でアイドルタイムアウトによりクローズした物理コネクション数 (注2)  | 
D24  | 例外発生によるクローズ回数  | 回  | 測定時間内でコネクション接続時もしくはクローズ時に例外発生によりクローズした物理コネクション数 (注2)  | 
D25  | コネクション獲得回数  | 回  | 測定時間内でアプリケーションがgetConnectionメソッドを実行してコネクションを獲得した回数 (注3)  | 
D26  | コネクションクローズ回数  | 回  | 測定時間内でアプリケーションがcloseメソッドを実行してコネクションを解放した回数 (注3)  | 
D27  | 通信待ちタイムアウト回数  | 回  | 測定時間内で通信待ちタイムアウトが発生した回数 (注3)  | 
D28  | コネクション平均使用時間  | ミリ秒  | 測定時間内にアプリケーションでコネクションを使用した平均時間 (注3)  | 
D29  | コネクション最小使用時間  | ミリ秒  | 測定時間内にアプリケーションでコネクションを使用した最小時間 (注3)  | 
D30  | コネクション最大使用時間  | ミリ秒  | 測定時間内にアプリケーションでコネクションを使用した最大時間 (注3)  | 
D31  | コネクション使用タイムアウト回数  | 回  | 測定時間内でコネクション使用タイムアウトが発生した回数 (注3)  | 
注1) InterstageでJDBCコネクションをプーリングしている、または、データベースがOracle10g以降かつJDBCドライバでJDBCコネクションをプーリングしている場合に、値を出力します。その他の場合は、“-”(ハイフン)が出力されます。
注2) InterstageでJDBCコネクションをプーリングしている場合のみ値を出力します。JDBCドライバでJDBCコネクションをプーリングしている場合、“-”(ハイフン)が出力されます。
注3) アプリケーションの前後で動作するコンテナ制御処理で使用されるコネクションの情報も合わせて表示されます。
※ 未使用のデータソースの性能情報は出力されません。
項番  | 項目名  | 単位  | 内容  | 
|---|---|---|---|
D1  | データ採取開始日時  | -  | 当該レコードの性能情報の測定を開始した日時  | 
D2  | データ採取終了日時  | -  | 当該レコードの性能情報の測定を終了した日時  | 
D3  | プロセス通番  | -  | IJServerが起動したプロセスの通番  | 
D4  | プロセスID  | -  | 測定対象のIJServerのプロセスID  | 
D5  | 実行トランザクション総数  | 個  | 測定時間内にアプリケーションで実行したJ2EEトランザクション数 (注1)  | 
D6  | コミットトランザクション数  | 個  | 測定時間内にアプリケーションでコミットしたJ2EEトランザクション数 (注1)  | 
D7  | ロールバックトランザクション数  | 個  | 測定時間内にアプリケーションでロールバックしたJ2EEトランザクション数 (注1)  | 
D8  | トランザクション平均時間  | ミリ秒  | 測定時間内にアプリケーションで実行したJ2EEトランザクションの平均時間 (注1)  | 
D9  | トランザクション最小時間  | ミリ秒  | 測定時間内にアプリケーションで実行したJ2EEトランザクションの最小時間 (注1)  | 
D10  | トランザクション最大時間  | ミリ秒  | 測定時間内にアプリケーションで実行したJ2EEトランザクションの最大時間 (注1)  | 
D11  | 現在実行トランザクション数  | 個  | ログ採取時の実行中であったJ2EEトランザクション数 (注1)  | 
D12  | 最小同時実行トランザクション数  | 個  | 測定時間内に同時に実行された最小J2EEトランザクション数 (注1)  | 
D13  | 最大同時実行トランザクション数  | 個  | 測定時間内に同時に実行された最大J2EEトランザクション数 (注1)  | 
注1) コンテナで制御されるトランザクションの情報も合わせて表示されます。
項番  | 項目名  | 単位  | 内容  | 
|---|---|---|---|
D1  | データ採取開始日時  | -  | 当該レコードの性能情報の測定を開始した日時  | 
D2  | データ採取終了日時  | -  | 当該レコードの性能情報の測定を終了した日時  | 
D3  | プロセス通番  | -  | IJServerが起動したプロセスの通番  | 
D4  | プロセスID  | -  | 測定対象のIJServerのプロセスID  | 
D5  | 現在使用スレッド数  | ログ採取時に使用中であったスレッド数  | |
D6  | 最小同時使用スレッド数  | 個  | 測定時間内に同時に使用した最小スレッド数 (注1)  | 
D7  | 最大同時使用スレッド数  | 個  | 測定時間内に同時に使用した最大スレッド数 (注2)  | 
D8  | 現在トータルスレッドプール数  | 個  | ログ採取時にプールされていたスレッド数 (注3)  | 
D9  | 最小トータルスレッドプール数  | 個  | 測定時間内にプールされていたスレッドの最小数 (注3)  | 
D10  | 最大トータルスレッドプール数  | 個  | 測定時間内にプールされていたスレッドの最大数 (注3)  | 
注1) クライアントからのリクエスト受け付け用にスレッドは1個使用されるため、クライアントからのリクエストがまったくない場合でも最小同時使用スレッド数は1が出力されます。
注2) クライアントからのリクエストを受付けるServletコンテナのServerSocketは数秒おきに待ち状態から復帰し、再度クライアントからのリクエストの待ち状態になります。そのため、クライアントからのリクエストがまったくない場合でも最大同時使用スレッド数は2が出力されます。
注3) クライアントからのリクエストが一定時間ない場合は、Servletコンテナの待機中の最大値に設定された値にしたがって余分な処理スレッドが破棄されます。このとき、クライアントからのリクエストを受け付けるスレッドは破棄対象となりませんので、 待機中の最大値+1 が最小値となります。
項番  | 項目名  | 単位  | 内容  | 
|---|---|---|---|
D1  | データ採取開始日時  | -  | 当該レコードの性能情報の測定を開始した日時  | 
D2  | データ採取終了日時  | -  | 当該レコードの性能情報の測定を終了した日時  | 
D3  | プロセス通番  | -  | IJServerが起動したプロセスの通番  | 
D4  | プロセスID  | -  | 測定対象のIJServerのプロセスID  | 
D5  | Message-driven Bean最大同時処理数  | 個  | Message-driven Beanでプーリングできるスレッド数の最大値  | 
D6  | Message-driven Bean現在スレッドプールサイズ  | 個  | ログ採取時にMessage-driven Beanでプーリングしていたスレッド数  | 
D7  | Message-driven Bean最小スレッドプールサイズ  | 個  | Message-driven Beanでプーリングした最小スレッド数  | 
D8  | Message-driven Bean最大スレッドプールサイズ  | 個  | Message-driven Beanでプーリングした最大スレッド数  | 
D9  | Message-driven Bean現在アイドルスレッド数  | 個  | ログ採取時にMessage-driven Beanでプーリングしたスレッドで未使用であったスレッド数  | 
D10  | Message-driven Bean最小アイドルスレッド数  | 個  | Message-driven Beanでプーリングしたスレッドで未使用であったスレッドの最小スレッド数  | 
D11  | Message-driven Bean最大アイドルスレッド数  | 個  | Message-driven Beanでプーリングしたスレッドで未使用であったスレッドの最大スレッド数  | 
D12  | Message-driven Beanアイドルタイムアウト発生回数  | 個  | Message-driven Beanでプーリングしたスレッドをアイドルタイムアウトで破棄したスレッド数  | 
■評価方法と対処方法
項番  | 評価方法  | 対応/処置  | 
|---|---|---|
1  | 途中ガーベジコレクションが発生しているにもかかわらず、ヒープ使用量が増加傾向にある。  | メモリリークの可能性があります。  | 
2  | ヒープ最小使用量がヒープ上限値に近い状態が続いている。  | 運用を継続するとヒープ不足になる可能性があります。  | 
3  | メタスペース最小使用量がメタスペース上限値に近い値となっている。  | 運用を継続するとメタスペース不足になる可能性があります。  | 
4  | ガーベジコレクション発生回数が多い。  | ガーベジコレクションが多く発生することでアプリケーションの処理性能が劣化している可能性があります。  | 
5  | ガーベジコレクションの処理トータル時間が長いときがある。  | IJServerを運用するサーバのCPU負荷が高い状態が続いている可能性があります。  | 
※ JavaVMのチューニングについては、以下も参照してください。
“チューニングガイド”-“JDK/JRE 8のチューニング”-“チューニング方法”
項番  | 評価方法  | 対応/処置  | 
|---|---|---|
1  | 物理コネクション最大数が物理コネクション上限数に近い値となっている。  | 運用を継続するとコネクション待ちとなる可能性があります。  | 
2  | 使用コネクション最大数が物理コネクション最小数よりかなり小さい値となっている。  | プーリングされているコネクションと比較して、使用しているコネクションが少ないため、無駄なコネクションがプーリングされている可能性があります。  | 
3  | 累積コネクション待ち回数が多い。  | コネクション待ちが発生することでアプリケーションの処理性能を劣化させる原因になっている可能性があります。  | 
4  | 平均コネクション待ち時間が長い。  | コネクション待ちが発生することでアプリケーションの処理性能を劣化させる原因になっている可能性があります。  | 
5  | コネクション待ち最小時間が短く、コネクション待ち最大時間が長い。  | 時間帯によりコネクション待ち時間にばらつきがあるため、アプリケーションの処理性能のばらつきが発生している可能性があります。  | 
6  | コネクション待ち最大スレッド数が増加している。  | アプリケーションで同時に使用するコネクションが多くなっているため、運用を継続するとアプリケーションの処理性能を劣化させる可能性があります。指定している最大コネクション数の指定が適切か見直してください。  | 
7  | コネクション待ちタイムアウト回数が増加している。  | コネクション待ちタイムアウトが発生してエラーとなるアプリケーションが増加しています。  | 
8  | 物理コネクション確立回数が多い。アイドルタイムアウトによるクローズ回数が多い。  | アイドルタイムアウトにより物理コネクション数が解放されるために物理コネクト回数が多くなり、アプリケーションの処理性能を劣化させる原因になっている可能性があります。  | 
9  | 物理コネクション確立回数が多い。例外発生によるクローズ回数が多い。  | アイドルタイムアウトにより物理コネクション数が解放されるために物理コネクト回数が多くなり、アプリケーションの処理性能を劣化させる原因になっている可能性があります。  | 
10  | コネクション獲得回数とコネクションクローズ回数の差が大きい。  | コネクションのクローズ漏れが発生している可能性があります。  | 
11  | コネクション平均使用時間が長い。  | データベースアクセス処理によりアプリケーションの処理性能を劣化させる原因になっている可能性があります。  | 
12  | コネクション最大使用時間とコネクション最小使用時間の差が大きい。  | データベースアクセス処理の何かしらの理由により、アプリケーションの処理性能のばらつきが発生している可能性があります。  | 
13  | 通信待ちタイムアウトの発生回数が多い。  | データベースアクセス処理によりアプリケーション処理性能が劣化している可能性があります。  | 
※ JDBCデータソースのチューニングについては、以下も参照してください。
項番  | 評価方法  | 対応/処置  | 
|---|---|---|
1  | 実行トランザクション総数と最大同時実行トランザクション数が増加し、トランザクション平均時間も増加している。  | 同時に実行されるトランザクションが増加したことにより、データベースの排他制御などでアプリケーションの処理性能が劣化している可能性があります。  | 
2  | 実行トランザクション総数は変わらないが、最大同時実行トランザクション数とトランザクション最大時間が大きい。  | 一定時間帯にトランザクション処理が集中したことにより、データベースの排他制御などでアプリケーションの処理遅延が発生した可能性があります。  | 
3  | コネクション最大使用時間とコネクション最小使用時間の差が大きい。  | データベースアクセス処理の何かしらの理由により、アプリケーションの処理性能のばらつきが発生している可能性があります。  | 
4  | ロールバックトランザクション数に比べてコミットトランザクション数が多い。  | コミット処理はロールバック処理に比べて一般的に負荷は高いため、アプリケーションの処理性能が劣化している可能性があります。  | 
※ JDBCデータソースのチューニングについては、以下も参照してください。
項番  | 評価方法  | 対応/処置  | 
|---|---|---|
1  | アクティブ数が、長時間トータルに近い値を示している。  | [CPUに余裕がある場合] 
  | 
[CPUに余裕がない場合] 
  | 
※ Servletコンテナのチューニングについては、以下も参照してください。
項番  | 評価方法  | 対応/処置  | 
|---|---|---|
1  | Message-driven Bean最大同時処理数とMessage-driven Bean最大スレッドプールサイズが近い値となっている。  | 運用を継続するとスレッド獲得待ちとなる可能性があります。  | 
2  | Message-driven Bean最小スレッドプールサイズとMessage-driven Bean最小スレッドプールサイズの差が大きく、Message-driven Beanアイドルタイムアウト発生回数が多い。  | Message-driven Beanのスレッド生成処理でアプリケーションの処理性能が劣化している可能性があります。  | 
3  | Message-driven Bean最大アイドルスレッド数が大きい。  | 指定しているMessage-driven Beanの最小同時処理数が大きいため、メモリ資源を無駄に消費している可能性があります。  | 
※ EJBコンテナのチューニングについては、以下も参照してください。