Interstage Application Server/Interstage Web Server チューニングガイド
目次 索引 前ページ次ページ

第5章 J2EEのチューニング> 5.1 J2EEモニタロギング機能

5.1.3 性能情報の分析と対処

 ログファイルに採取した性能情報の分析方法と対処方法について説明します。

■出力情報

 モニタ情報ログファイルは、以下のように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、・・・に対応しています。

1)JavaVM情報

項番

項目名

単位

内容

D1

データ採取開始日時

当該レコードの性能情報の測定を開始した日時

D2

データ採取終了日時

当該レコードの性能情報の測定を終了した日時

D3

プロセス通番

IJServerが起動したプロセスの通番

D4

プロセスID

測定対象のIJServerのプロセスID

D5

コンテナタイプ

JavaVMのコンテナタイプ。以下のいずれかを出力します。
・1VM(ServletとEJBを運用するプロセス)
・Web(Servletのみ運用するプロセス)
・EJB(EJBのみ運用するプロセス)

D6

JavaVMの運用時間

IJServer起動時からの総時間

D7

ヒープ現在使用量

KB

ログ採取時のJavaVMのヒープ使用量

D8

ヒープ最小使用量

KB

測定時間内でのJavaVMの最小ヒープ使用量 (注1)

D9

ヒープ最大使用量

KB

測定時間内でのJavaVMの最大ヒープ使用量 (注1)

D10

ヒープ上限値

KB

ヒープサイズの上限値(-Xmxオプションで指定した値とほぼ同等の値)

D11

Perm領域現在使用量

KB

ログ採取時のJavaVMのPerm領域使用量

D12

Perm領域最小使用量

KB

測定時間内でのJavaVMの最小Perm領域使用量 (注1)

D13

Perm領域最大使用量

KB

測定時間内でのJavaVMの最大Perm領域使用量 (注1)

D14

Perm領域上限値

KB

Perm領域サイズの上限値(-XX:MaxPermSizeオプションで指定した値とほぼ同等の値)

D15

ガーベジコレクション発生回数

測定時間内でのガーベジコレクションの発生回数 (注2)

D16

ガーベジコレクション処理トータル時間

ミリ秒

測定時間内でのガーベジコレクションの処理時間の合計値 (注2)

注1) JavaVMヒープ/Permanent領域の最小値/最大値については、Interstage管理コンソールのモニタ表示画面と同様に、3秒間隔でサンプリングした値の最小値/最大値を出力します。
注2) ガーベジコレクションは、Full GCの情報を使用しています。

2)データソース情報

項番

項目名

単位

内容

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) アプリケーションの前後で動作するコンテナ制御処理で使用されるコネクションの情報も合わせて表示されます。
※ 未使用のデータソースの性能情報は出力されません。

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) コンテナで制御されるトランザクションの情報も合わせて表示されます。

4)Servletコンテナ情報

項番

項目名

単位

内容

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 が最小値となります。

5)EJBコンテナ情報

項番

項目名

単位

内容

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)JavaVM情報

項番

評価方法

対応/処置

1

途中ガーベジコレクションが発生しているにもかかわらず、ヒープ使用量が増加傾向にある。

メモリリークの可能性があります。
不要になったオブジェクトが参照され続けていることがないかなど、サーバアプリケーションの見直しを実施してください。
また、Webアプリケーションのセションタイムアウト時間を極端に長く設定している場合、設定値が妥当か見直しを実施してください。

2

ヒープ最小使用量がヒープ上限値に近い状態が続いている。

運用を継続するとヒープ不足になる可能性があります。
指定しているヒープサイズの上限を増やすなど、IJServerの設定を見直してください。

3

Perm領域最小使用量がPerm領域上限値に近い値となっている。

運用を継続するとPerm領域不足になる可能性があります。
指定しているPerm領域サイズを増やす等、IJServerの設定を見直してください。

4

ガーベジコレクション発生回数が多い。

ガーベジコレクションが多く発生することでアプリケーションの処理性能が劣化している可能性があります。
JavaVMヒープの最小使用量が上限値と近い値となっている場合、ヒープ不足によりガーベジコレクションが多発している可能性があります。ヒープの上限を増やすなど、IJServerの設定を見直してください。

5

ガーベジコレクションの処理トータル時間が長いときがある。

IJServerを運用するサーバのCPU負荷が高い状態が続いている可能性があります。
不要なアプリケーションを停止するなどしてCPU負荷を軽減するか、IJServerを運用するサーバのCPU性能が適正か見直してください。
また、ヒープサイズを大きくすると、1回のガーベジコレクションで回収されるオブジェクトが増えるため、1回あたりの処理時間が長くなる傾向にあります。
ヒープの使用状況を確認し、余裕がある場合はヒープサイズの上限を小さくすることを検討してください。

※ JavaVMのチューニングについては、本チューニングガイドの以下も参照してください。

2)データソース情報

項番

評価方法

対応/処置

1

物理コネクション最大数が物理コネクション上限数に近い値となっている。

運用を継続するとコネクション待ちとなる可能性があります。
指定している最大コネクション数の指定が適切か見直してください。

2

使用コネクション最大数が物理コネクション最小数よりかなり小さい値となっている。

プーリングされているコネクションと比較して、使用しているコネクションが少ないため、無駄なコネクションがプーリングされている可能性があります。
指定している事前コネクト数とアイドルコネクトタイムアウト値を見直してください。事前コネクト数を小さくすることで常時接続している物理コネクションを少なくすることできます。また、アイドルコネクトタイムアウトを小さくすることで無駄なコネクションを解放することが可能です。

3

累積コネクション待ち回数が多い。

コネクション待ちが発生することでアプリケーションの処理性能を劣化させる原因になっている可能性があります。
指定している最大コネクション数の指定が適切か見直してください。

4

平均コネクション待ち時間が長い。

コネクション待ちが発生することでアプリケーションの処理性能を劣化させる原因になっている可能性があります。
指定している最大コネクション数もしくはコネクション待ち時間の指定が適切か見直してください。

5

コネクション待ち最小時間が短く、コネクション待ち最大時間が長い。

時間帯によりコネクション待ち時間にばらつきがあるため、アプリケーションの処理性能のばらつきが発生している可能性があります。
コネクション待ち時間の設定を短くして待ち時間が長時間に及ぶ場合にはエラーを返却するなどの対策を検討してください。

6

コネクション待ち最大スレッド数が増加している。

アプリケーションで同時に使用するコネクションが多くなっているため、運用を継続するとアプリケーションの処理性能を劣化させる可能性があります。指定している最大コネクション数の指定が適切か見直してください。

7

コネクション待ちタイムアウト回数が増加している。

コネクション待ちタイムアウトが発生してエラーとなるアプリケーションが増加しています。
指定している最大コネクション数もしくはコネクション待ち時間の指定が適切か見直してください。

8

物理コネクション確立回数が多い。アイドルタイムアウトによるクローズ回数が多い。

アイドルタイムアウトにより物理コネクション数が解放されるために物理コネクト回数が多くなり、アプリケーションの処理性能を劣化させる原因になっている可能性があります。
アイドルタイムアウト値が適切か見直してください。また、事前コネクト数を指定することで物理コネクションを常時確立することもできます。

9

物理コネクション確立回数が多い。例外発生によるクローズ回数が多い。

アイドルタイムアウトにより物理コネクション数が解放されるために物理コネクト回数が多くなり、アプリケーションの処理性能を劣化させる原因になっている可能性があります。
アプリケーションを見直して例外発生原因を取り除いてください。

10

コネクション獲得回数とコネクションクローズ回数の差が大きい。

コネクションのクローズ漏れが発生している可能性があります。
アプリケーションを見直してください。

11

コネクション平均使用時間が長い。

データベースアクセス処理によりアプリケーションの処理性能を劣化させる原因になっている可能性があります。
アプリケーションもしくはデータベースの設定を見直してください。

12

コネクション最大使用時間とコネクション最小使用時間の差が大きい。

データベースアクセス処理の何かしらの理由により、アプリケーションの処理性能のばらつきが発生している可能性があります。
アプリケーションもしくはデータベースの設定を見直してください。

13

通信待ちタイムアウトの発生回数が多い。

データベースアクセス処理によりアプリケーション処理性能が劣化している可能性があります。
データベースの処理時間、ハングの有無をチェックしてください。

※ JDBCデータソースのチューニングについては、本チューニングガイドの以下も参照してください。

3)トランザクション情報

項番

評価方法

対応/処置

1

実行トランザクション総数と最大同時実行トランザクション数が増加し、トランザクション平均時間も増加している。

同時に実行されるトランザクションが増加したことにより、データベースの排他制御などでアプリケーションの処理性能が劣化している可能性があります。
IJServerに指定した同時処理数を小さくして処理性能を安定させるか、IJServerサーバを運用するサーバの処理性能を見直してください。

2

実行トランザクション総数は変わらないが、最大同時実行トランザクション数とトランザクション最大時間が大きい。

一定時間帯にトランザクション処理が集中したことにより、データベースの排他制御などでアプリケーションの処理遅延が発生した可能性があります。
IJServerに指定した同時処理数を小さくして処理性能を安定させるか、IJServerサーバを運用するサーバの処理性能を見直してください。

3

コネクション最大使用時間とコネクション最小使用時間の差が大きい。

データベースアクセス処理の何かしらの理由により、アプリケーションの処理性能のばらつきが発生している可能性があります。
アプリケーションもしくはデータベースの設定を見直してください。
もしくはIJServerを運用するサーバのCPU負荷が高い状態が一時的に発生している可能性があります。不要なアプリケーションを停止するなどしてCPU負荷を軽減するか、IJServerを運用するサーバのCPU性能が適正か見直してください。

4

ロールバックトランザクション数に比べてコミットトランザクション数が多い。

コミット処理はロールバック処理に比べて一般的に負荷は高いため、アプリケーションの処理性能が劣化している可能性があります。
無駄にコミット処理を実行していないかアプリケーションを見直してください。

※ JDBCデータソースのチューニングについては、本チューニングガイドの以下も参照してください。

4)Servletコンテナ情報

項番

評価方法

対応/処置

1

アクティブ数が、長時間トータルに近い値を示している。

[CPUに余裕がある場合]

  • Servletコンテナの同時処理数が小さすぎる可能性があります。
    Servletコンテナの同時処理数を増やしてください。ただし、JavaVMのヒープ使用量に余裕がない場合にそのまま同時処理数を増やすとOutOfMemoryErrorが発生する可能性があります。この場合は、JavaVMのヒープ使用量の最大値を増やすなどの対処を同時に行ってください。
  • プロセス内の要因によってスレッド間の競合が発生している可能性があります。
    ワークユニットのプロセス多重度を増やしてください。

[CPUに余裕がない場合]

  • サーバの処理能力を超えている可能性があります。
    サーバの増設または、より性能の良いサーバへのリプレースを検討してください。
※ Servletコンテナのチューニングについては、本チューニングガイドの以下も参照してください。

5)EJBコンテナ情報

項番

評価方法

対応/処置

1

Message-driven Bean最大同時処理数とMessage-driven Bean最大スレッドプールサイズが近い値となっている。

運用を継続するとスレッド獲得待ちとなる可能性があります。
指定しているMessage-driven Beanの同時処理数が適切か見直してください。

2

Message-driven Bean最小スレッドプールサイズとMessage-driven Bean最小スレッドプールサイズの差が大きく、Message-driven Beanアイドルタイムアウト発生回数が多い。

Message-driven Beanのスレッド生成処理でアプリケーションの処理性能が劣化している可能性があります。
指定しているMessage-driven Beanの最小同時処理数が適切か見直してください。

3

Message-driven Bean最大アイドルスレッド数が大きい。

指定しているMessage-driven Beanの最小同時処理数が大きいため、メモリ資源を無駄に消費している可能性があります。
指定しているMessage-driven Beanの最小同時処理数が適切か見直してください。

※ EJBコンテナのチューニングについては、本チューニングガイドの以下も参照してください。

目次 索引 前ページ次ページ

Copyright 2008 FUJITSU LIMITED