Interstage Application Server/Interstage Web Server チューニングガイド |
目次 索引 |
第5章 J2EEのチューニング | > 5.1 J2EEモニタロギング機能 |
ログファイルに採取した性能情報の分析方法と対処方法について説明します。
モニタ情報ログファイルは、以下のように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のコンテナタイプ。以下のいずれかを出力します。
・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の情報を使用しています。
項番
項目名
単位
内容
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
途中ガーベジコレクションが発生しているにもかかわらず、ヒープ使用量が増加傾向にある。
メモリリークの可能性があります。
不要になったオブジェクトが参照され続けていることがないかなど、サーバアプリケーションの見直しを実施してください。
また、Webアプリケーションのセションタイムアウト時間を極端に長く設定している場合、設定値が妥当か見直しを実施してください。2
ヒープ最小使用量がヒープ上限値に近い状態が続いている。
運用を継続するとヒープ不足になる可能性があります。
指定しているヒープサイズの上限を増やすなど、IJServerの設定を見直してください。3
Perm領域最小使用量がPerm領域上限値に近い値となっている。
運用を継続するとPerm領域不足になる可能性があります。
指定しているPerm領域サイズを増やす等、IJServerの設定を見直してください。4
ガーベジコレクション発生回数が多い。
ガーベジコレクションが多く発生することでアプリケーションの処理性能が劣化している可能性があります。
JavaVMヒープの最小使用量が上限値と近い値となっている場合、ヒープ不足によりガーベジコレクションが多発している可能性があります。ヒープの上限を増やすなど、IJServerの設定を見直してください。5
ガーベジコレクションの処理トータル時間が長いときがある。
IJServerを運用するサーバのCPU負荷が高い状態が続いている可能性があります。
不要なアプリケーションを停止するなどしてCPU負荷を軽減するか、IJServerを運用するサーバのCPU性能が適正か見直してください。
また、ヒープサイズを大きくすると、1回のガーベジコレクションで回収されるオブジェクトが増えるため、1回あたりの処理時間が長くなる傾向にあります。
ヒープの使用状況を確認し、余裕がある場合はヒープサイズの上限を小さくすることを検討してください。
※ JavaVMのチューニングについては、本チューニングガイドの以下も参照してください。
- “J2EEのチューニング”−“IJServerのチューニング”−“JavaVMのヒープ領域サイズ”
- “J2EEのチューニング”−“IJServerのチューニング”−“ガーベジコレクション発生回数”
- “JDK/JREのチューニング”−“チューニング方法”
項番
評価方法
対応/処置
1
物理コネクション最大数が物理コネクション上限数に近い値となっている。
運用を継続するとコネクション待ちとなる可能性があります。
指定している最大コネクション数の指定が適切か見直してください。2
使用コネクション最大数が物理コネクション最小数よりかなり小さい値となっている。
プーリングされているコネクションと比較して、使用しているコネクションが少ないため、無駄なコネクションがプーリングされている可能性があります。
指定している事前コネクト数とアイドルコネクトタイムアウト値を見直してください。事前コネクト数を小さくすることで常時接続している物理コネクションを少なくすることできます。また、アイドルコネクトタイムアウトを小さくすることで無駄なコネクションを解放することが可能です。3
累積コネクション待ち回数が多い。
コネクション待ちが発生することでアプリケーションの処理性能を劣化させる原因になっている可能性があります。
指定している最大コネクション数の指定が適切か見直してください。4
平均コネクション待ち時間が長い。
コネクション待ちが発生することでアプリケーションの処理性能を劣化させる原因になっている可能性があります。
指定している最大コネクション数もしくはコネクション待ち時間の指定が適切か見直してください。5
コネクション待ち最小時間が短く、コネクション待ち最大時間が長い。
時間帯によりコネクション待ち時間にばらつきがあるため、アプリケーションの処理性能のばらつきが発生している可能性があります。
コネクション待ち時間の設定を短くして待ち時間が長時間に及ぶ場合にはエラーを返却するなどの対策を検討してください。6
コネクション待ち最大スレッド数が増加している。
アプリケーションで同時に使用するコネクションが多くなっているため、運用を継続するとアプリケーションの処理性能を劣化させる可能性があります。指定している最大コネクション数の指定が適切か見直してください。
7
コネクション待ちタイムアウト回数が増加している。
コネクション待ちタイムアウトが発生してエラーとなるアプリケーションが増加しています。
指定している最大コネクション数もしくはコネクション待ち時間の指定が適切か見直してください。8
物理コネクション確立回数が多い。アイドルタイムアウトによるクローズ回数が多い。
アイドルタイムアウトにより物理コネクション数が解放されるために物理コネクト回数が多くなり、アプリケーションの処理性能を劣化させる原因になっている可能性があります。
アイドルタイムアウト値が適切か見直してください。また、事前コネクト数を指定することで物理コネクションを常時確立することもできます。9
物理コネクション確立回数が多い。例外発生によるクローズ回数が多い。
アイドルタイムアウトにより物理コネクション数が解放されるために物理コネクト回数が多くなり、アプリケーションの処理性能を劣化させる原因になっている可能性があります。
アプリケーションを見直して例外発生原因を取り除いてください。10
コネクション獲得回数とコネクションクローズ回数の差が大きい。
コネクションのクローズ漏れが発生している可能性があります。
アプリケーションを見直してください。11
コネクション平均使用時間が長い。
データベースアクセス処理によりアプリケーションの処理性能を劣化させる原因になっている可能性があります。
アプリケーションもしくはデータベースの設定を見直してください。12
コネクション最大使用時間とコネクション最小使用時間の差が大きい。
データベースアクセス処理の何かしらの理由により、アプリケーションの処理性能のばらつきが発生している可能性があります。
アプリケーションもしくはデータベースの設定を見直してください。13
通信待ちタイムアウトの発生回数が多い。
データベースアクセス処理によりアプリケーション処理性能が劣化している可能性があります。
データベースの処理時間、ハングの有無をチェックしてください。
※ JDBCデータソースのチューニングについては、本チューニングガイドの以下も参照してください。
- “J2EEのチューニング”−“IJServerのチューニング”−“JDBCのコネクション”
- “J2EEのチューニング”−“IJServerのチューニング”−“Statementキャッシュ機能”
項番
評価方法
対応/処置
1
実行トランザクション総数と最大同時実行トランザクション数が増加し、トランザクション平均時間も増加している。
同時に実行されるトランザクションが増加したことにより、データベースの排他制御などでアプリケーションの処理性能が劣化している可能性があります。
IJServerに指定した同時処理数を小さくして処理性能を安定させるか、IJServerサーバを運用するサーバの処理性能を見直してください。2
実行トランザクション総数は変わらないが、最大同時実行トランザクション数とトランザクション最大時間が大きい。
一定時間帯にトランザクション処理が集中したことにより、データベースの排他制御などでアプリケーションの処理遅延が発生した可能性があります。
IJServerに指定した同時処理数を小さくして処理性能を安定させるか、IJServerサーバを運用するサーバの処理性能を見直してください。3
コネクション最大使用時間とコネクション最小使用時間の差が大きい。
データベースアクセス処理の何かしらの理由により、アプリケーションの処理性能のばらつきが発生している可能性があります。
アプリケーションもしくはデータベースの設定を見直してください。
もしくはIJServerを運用するサーバのCPU負荷が高い状態が一時的に発生している可能性があります。不要なアプリケーションを停止するなどしてCPU負荷を軽減するか、IJServerを運用するサーバのCPU性能が適正か見直してください。4
ロールバックトランザクション数に比べてコミットトランザクション数が多い。
コミット処理はロールバック処理に比べて一般的に負荷は高いため、アプリケーションの処理性能が劣化している可能性があります。
無駄にコミット処理を実行していないかアプリケーションを見直してください。
※ JDBCデータソースのチューニングについては、本チューニングガイドの以下も参照してください。
- “J2EEのチューニング”−“IJServerのチューニング”−“トランザクションアイソレーションレベル”
項番
評価方法
対応/処置
1
アクティブ数が、長時間トータルに近い値を示している。
[CPUに余裕がある場合]
- Servletコンテナの同時処理数が小さすぎる可能性があります。
Servletコンテナの同時処理数を増やしてください。ただし、JavaVMのヒープ使用量に余裕がない場合にそのまま同時処理数を増やすとOutOfMemoryErrorが発生する可能性があります。この場合は、JavaVMのヒープ使用量の最大値を増やすなどの対処を同時に行ってください。- プロセス内の要因によってスレッド間の競合が発生している可能性があります。
ワークユニットのプロセス多重度を増やしてください。[CPUに余裕がない場合]
- サーバの処理能力を超えている可能性があります。
サーバの増設または、より性能の良いサーバへのリプレースを検討してください。
※ Servletコンテナのチューニングについては、本チューニングガイドの以下も参照してください。
- “J2EEのチューニング”−“Servletコンテナのチューニング”
項番
評価方法
対応/処置
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コンテナのチューニングについては、本チューニングガイドの以下も参照してください。
- “J2EEのチューニング”−“EJBコンテナのチューニング”
目次 索引 |