...

Java Diagnostics ユーザーガイド (HPUX/Win/Solaris/AIX)

by user

on
Category: Documents
6

views

Report

Comments

Transcript

Java Diagnostics ユーザーガイド (HPUX/Win/Solaris/AIX)
HP OpenView Java Diagnostics
Windows® および UNIX® オペ レーテ ィ ング シ ス テム
ソ フ ト ウ ェ ア バージ ョ ン : 3.1.1
ユーザー ガ イ ド
ド キ ュ メ ン ト 発行日 : 2006 年 5 月
ソ フ ト ウ ェ ア リ リ ース日 : 2006 年 5 月
ご注意
保証について
Hewlett-Packard 社は、 こ の文書に関 し て市場性お よ び特殊目的への適合性の暗黙の保証を含む一切の保証を行わ
ない も の と し ま す。 Hewlett-Packard 社は、 こ の文書内の欠陥に対 し て、 お よ び こ の文書の提供、 実行、 ま たは使
用に関連す る 直接損害、 間接損害、 実損害、 偶発損害、 お よ び結果損害に対 し て責任を負わない も の と し ます。
ご使用の Hewlett-Packard 製品に適用 さ れ る 個別の保証条項の複写は、 お近 く の営業所で入手で き ます。
法律上の権利の制限について
合衆国政府に よ る 使用、 複製、 お よ び開示に関 し ては、 国防総省機関につい ては DFARS 252.227-7013 の 「技術
デー タ お よ び コ ン ピ ュ ー タ ソ フ ト ウ ェ アにおけ る 権利」 条項の (c)(1)(ii) 項で定め る 制限事項がそれぞれ適用 さ れ
ます。
Hewlett-Packard Company
United States of America
その他の機関に対 し ては、 FAR 52.227-19(c)(1) お よ び (c)(2) で定め る 制限事項がそれぞれ適用 さ れ ます。
著作権について
© Copyright 2001-2006 Hewlett-Packard Development Company, L.P.
当社の事前の書面に よ る 承諾な く 、 本書の コ ピー、 改変、 ま たは別の言語への翻訳を行 う こ と は禁 じ ら れてい ま
す。 こ の情報は予告な し に変更 さ れ る こ と があ り ます。
商標について
Adobe® お よ び Acrobat® は、 Adobe Systems Incorporated の商標です。
Intel® お よ び Itanium® は、 米国お よ びその他の国におけ る Intel Corporation ま たはその代理店の商標ま たは登録商
標です。
Java ™ は Sun Microsystems, Inc. の米国内での商標です。
Microsoft® お よ び Windows® は Microsoft Corporation の米国内での登録商標です。
UNIX® は The Open Group の登録商標です。
ド キ ュ メ ン ト の更新情報
こ のマニ ュ アルの表紙には、 次の識別情報が記載 さ れてい ます。
•
ソ フ ト ウ ェ アのバージ ョ ン番号
•
ド キ ュ メ ン ト の発行日。 ド キ ュ メ ン ト の更新のたびに変更 さ れ ます。
•
ソ フ ト ウ ェ アの リ リ ース日。 ソ フ ト ウ ェ アの今バージ ョ ン の リ リ ース日を示 し ます。
最新版の有無や、現在使用中のエデ ィ シ ョ ン が最新版か ど う か を確認す る 場合は、次の URL を参照 し て く だ さ い。
http://ovweb.external.hp.com/lpe/doc_serv/
適切な製品サポー ト サービ ス に登録 し て、 更新版ま たは最新版を入手す る こ と も で き ます。 詳細は、 HP の販売代
理店にご確認 く だ さ い。
こ の ド キ ュ メ ン ト は、 Acrobat Reader バージ ョ ン 6 以上で閲覧す る こ と をお勧め し ます。
2
サポー ト
次の HP OpenView サポー ト Web サ イ ト を参照 し て く だ さ い。
http://www.hp.com/managementsoftware/support
HP OpenView で提供す る 製品、 サービ ス、 サポー ト に関す る 詳細情報を ご覧いただけ ます。
HP OpenView オ ン ラ イ ン ソ フ ト ウ ェ ア サポー ト には、 お客 さ ま ご自身で問題を解決す る のに役立つセルフ ソ ルブ
機能が用意 さ れてい ます。 ま た、 こ のサ イ ト では、 業務の遂行に必要な各種対話型テ ク ニ カル サポー ト ツールを
す ぐ にご利用いただけ ます。 次の機能が用意 さ れてい ます。
•
マニ ュ アル類の検索
•
オ ン ラ イ ン でのエ ンハン ス メ ン ト ( 機能拡張 ) 要求
•
ソ フ ト ウ ェ ア パ ッ チのダ ウ ン ロ ー ド
•
サポー ト ケース の登録 と ト ラ ッ キ ン グ
•
サポー ト 契約の確認、 変更、 お よ び更新
•
HP サポー ト の連絡先の確認
•
入手可能なサービ ス の確認
•
フ ォ ー ラ ムへの参加
•
ソ フ ト ウ ェ ア ト レーニ ン グの確認 と 登録
各種サポー ト のご利用の際には、 ほ と ん ど の場合、 HP Passport ユーザー と し て ご登録いただいた う えで、 ロ グ イ
ンす る こ と が条件 と な り ます ( 多 く の場合、 サポー ト 契約 も 必要です )。
ア ク セ ス レベルの詳細は、 次のサ イ ト を参照 し て く だ さ い。
http://www.hp.com/managementsoftware/access_level
HP Passport ID の登録は、 次のサ イ ト で行 う こ と がで き ます。
http://www.managementsoftware.hp.com/passport-registration.html
3
4
目次
1 は じ めに . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Java Diagnostics の機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9
Java Diagnostics の概念 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
JVM エージ ェ ン ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
ノ ー ド エージ ェ ン ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
2 Java Diagnostics のイ ン ス ト ール. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
サポー ト 対象プ ラ ッ ト フ ォ ーム と 必要な シ ス テ ム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13
エージ ェ ン ト の要件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13
Console の要件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14
Java Diagnostics フ ァ イ ルのデ ィ レ ク ト リ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14
JVM エージ ェ ン ト を使用す る ためのアプ リ ケーシ ョ ン の設定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15
JVM エージ ェ ン ト のオプシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15
ア ク セ ス制限の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20
3 Java Diagnostics の起動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
サン プル アプ リ ケーシ ョ ン の実行. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22
Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22
UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22
メ モ リ リ ー ク のアプ リ ケーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23
ス レ ッ ド のデ ッ ド ロ ッ ク のサン プル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25
Java Diagnostics Console の起動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27
アプ リ ケーシ ョ ンの起動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27
ノ ー ド エージ ェ ン ト への接続. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27
アプ リ ケーシ ョ ン メ ト リ ッ ク の表示. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29
4 ア プ リ ケーシ ョ ンの監視 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
デー タ 収集 と 表示の制御 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31
デー タ 収集の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32
表示す る メ ト リ ッ ク の選択 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32
警告の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33
ノ ー ド エージ ェ ン ト の管理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35
Windows での ノ ー ド エージ ェ ン ト の管理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35
ノ ー ド エージ ェ ン ト をサービ ス と し て実行す る . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35
Windows のサービ ス が実行 さ れてい る こ と を検証す る . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35
ノ ー ド エージ ェ ン ト を手動で起動す る . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36
ノ ー ド エージ ェ ン ト を停止す る . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36
UNIX での ノ ー ド エージ ェ ン ト の管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36
ノ ー ド エージ ェ ン ト をデーモ ン と し て実行す る . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36
5
UNIX のデーモ ンが実行 さ れてい る こ と を検証す る . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36
ノ ー ド エージ ェ ン ト を手動で起動す る . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37
ノ ー ド エージ ェ ン ト を停止す る . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37
ノ ー ド エージ ェ ン ト のア ク セ ス制限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38
複数の ノ ー ド エージ ェ ン ト の実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38
メ ト リ ッ ク 情報の保存 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39
アプ リ ケーシ ョ ン か ら 直接行 う デー タ 保存 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39
Java Diagnostics Console か ら のデー タ 保存 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39
ト ラ ンザ ク シ ョ ン固有の問題の診断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40
ト ラ ンザ ク シ ョ ンの フ ィ ル タ リ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40
実行中のアプ リ ケーシ ョ ンの診断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41
CPU 使用率が予想を超え てい る メ ソ ッ ド の特定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41
アプ リ ケーシ ョ ンの ロ ー ド の表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41
ガーベジ コ レ ク シ ョ ンに よ る 長い休止の有無のチ ェ ッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41
アプ リ ケーシ ョ ンにおけ る ページ ン グ問題の有無のチ ェ ッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42
System.gc() の過度な呼び出 し の特定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42
ガーベジ コ レ ク シ ョ ンにおけ る 所要時間の比率の確認 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43
ヒ ープ サ イ ズの適切 さ のチ ェ ッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44
Java メ モ リ リ ー ク の確認. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44
メ モ リ リ ー ク の重要度の判別 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44
過度なオブジ ェ ク ト 割 り 当ての特定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45
過度なオブジ ェ ク ト 割 り 当て を行 う 部分の特定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45
ス レ ッ ド の異常終了の特定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45
存続時間の短い複数の ス レ ッ ド の特定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45
過度な ロ ッ ク 競合の特定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46
デ ッ ド ロ ッ ク し た ス レ ッ ド の特定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46
待機中の ス レ ッ ド の特定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47
過度な ス レ ッ ド 作成の特定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47
過度な メ ソ ッ ド コ ンパ イ ルの特定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48
ロ ー ド さ れ る ク ラ ス数の過剰の特定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49
5 Java Diagnostics Console の使用方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
メ イ ン ウ ィ ン ド ウ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51
Profile Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51
ノ ー ド エージ ェ ン ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52
JVM エージ ェ ン ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52
オープ ン し てい る セ ッ シ ョ ン と キ ャ ッ シ ュ さ れてい る セ ッ シ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53
タ イ ム ス ラ イ ス エ ン ト リ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53
コ ン ト ロ ール パネルのボ タ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53
メ ト リ ッ ク タ ブ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55
メ ニ ュ ー項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56
ス テー タ ス バー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57
Session Preferences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .58
収集す る メ ト リ ッ ク の指定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .58
フ ィ ル タ の指定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59
情報の フ ィ ル タ リ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59
フ ィ ル タ の編集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60
フ ィ ル タ の追加 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60
6
フ ィ ル タ セ ッ ト の指定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60
警告の有効化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62
メ ト リ ッ ク デ ィ ス プ レ イ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63
Java Method Hotspots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63
指針 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63
詳細 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63
Thrown Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64
Thrown Exceptions with Stacktraces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66
Heap Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .67
指針 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .67
詳細 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68
Garbage Collection イ ベン ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68
指針 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69
詳細 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69
% of Time spent in Garbage Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70
指針 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70
詳細 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70
Object Allocation Statistics by Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
指針 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
詳細 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
Object Allocation Statistics by Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72
指針 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72
詳細 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73
Thread Histogram. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73
指針 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73
詳細 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74
Lock Contention . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74
指針 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75
詳細 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75
Method Compilation Count . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76
指針 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76
Loaded Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76
指針 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77
警告 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78
Alert Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78
Expected OutOfMemory Errors 警告 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80
Thread Deadlock 警告 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80
Memory Leak Locations 警告 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81
Abnormal Thread Termination 警告 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82
Uncaught Exception Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82
Excessive Compilation 警告 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .83
6 Java Diagnostics の仕組み . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
実行中のアプ リ ケーシ ョ ンに対す る パフ ォ ーマ ン ス オーバーヘ ッ ド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85
アプ リ ケーシ ョ ン サーバーの起動時間 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85
監視のオーバーヘ ッ ド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85
ノ ー ド エージ ェ ン ト のオーバーヘ ッ ド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86
Console のオーバーヘ ッ ド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86
7
デー タ のサ ンプ リ ン グに関す る 留意事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87
メ モ リ リ ー ク 検出の し く み. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89
7
ト ラ ブルシ ュ ーテ ィ ング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
バージ ョ ン番号の確認 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .91
デバ ッ グ モー ド 、 ロ グ、 サポー ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .92
イ ン ス ト ール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93
Console. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .94
JVM エージ ェ ン ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95
ノ ー ド エージ ェ ン ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .96
用語集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
8
1 は じ めに
HP OVTA Java Diagnostics は、 配布 さ れた Java アプ リ ケーシ ョ ン を対象 と し た ド リ ルダ ウ ン解析
ツールです。 Java Diagnostics は、 Java アプ リ ケーシ ョ ン の稼動状態の表示機能を付加す る こ と に
よ り 、 OVTA の問題解決能力を強化 し ます。
•
HP OVTA は、 J2EE アプ リ ケーシ ョ ン を ト ラ ンザ ク シ ョ ン単位で表示 し ます。
•
Java Diagnostics は、 ア プリ ケ ーシ ョ ン 単位と Java 仮想マシ ン (JVM) 単位の表示を 行いま す。
同時に、 HP OVTA と Java Diagnostics は、 開発時だ け で な く 、 稼動環境におい て も 、 Java のパ
フ ォ ーマ ン ス の問題を特定す る のに役立ち ます。
注記 : Java Diagnostics を Java アプ レ ッ ト の測定に使用す る こ と はで き ません。
Java Diagnostics では、 製品を配布 し た後でなければ発生 し ない Java アプ リ ケーシ ョ ンの問題の多
く を診断す る こ と がで き ます。 特定可能な問題の種類には、 次の よ う な も のがあ り ます。
•
メ モ リ リ テ ン シ ョ ン の問題
•
Java コ ー ド のパフ ォーマ ン ス ボ ト ルネ ッ ク
•
JVM ヒ ープの不適切な設定
こ れ ら の問題は、 配布後の環境にのみ存在す る 固有の状況に依存す る ため、 配布前の環境で発見
ま たは再現す る こ と は容易ではあ り ません。
Java Diagnostics の機能
Java Diagnostics のアプ リ ケーシ ョ ン メ ト リ ッ ク と JVM メ ト リ ッ ク を使用す る と 、 開発 ス タ ッ フ
と 運用ス タ ッ フ と の間のループ を断ち切 る こ と がで き ます。
9
Java Diagnostics の具体的な機能は次の と お り です。
10
•
ガーベジ コ レ ク シ ョ ン イ ベン ト を含む ヒ ープ サ イ ズの動的な表示
•
ガーベジ コ レ ク シ ョ ン イ ベン ト と ガーベジ コ レ ク シ ョ ン の所要時間の比率の動的な表示
•
メ モ リ リ ー ク を検出 し 、 リ ー ク 率 と と も に警告
•
Java Method Hotspots。 メ ソ ッ ド 別の CPU 使用率を表 し ます。
•
時間の経過に伴 う ス レ ッ ド の状態の変化を表すス レ ッ ド 表示
•
メ ソ ッ ド 別のオブジ ェ ク ト 割 り 当て率
•
オブジ ェ ク ト タ イ プ別のオブジ ェ ク ト 割 り 当て率
•
JVM 動的 コ ンパ イ ラ での メ ソ ッ ド コ ンパ イ ル数
•
JVM が ロ ー ド し た ク ラ ス の数
•
ス ロ ー さ れた例外の統計
•
ス レ ッ ド のデ ッ ド ロ ッ ク の検出
•
メ モ リ に残留 し てい る オブジ ェ ク ト の特定
•
ス レ ッ ド の異常終了の検出
•
単一の コ ン ソ ールか ら 複数のアプ リ ケーシ ョ ン と 複数の ノ ー ド を監視
第1章
Java Diagnostics の概念
Java Diagnostics は、 2 つの主要な コ ン ポーネ ン ト で構成 さ れてい ます。
•
Console。 アプ リ ケーシ ョ ン を監視す る メ イ ン ウ ィ ン ド ウ です。
•
エージ ェ ン ト 。 各管理 ノ ー ド 上で Java Diagnostics と し て機能 し ます。 エージ ェ ン ト には、 次
の 2 つのサブ コ ン ポーネ ン ト があ り ます。
— JVM エージ ェ ン ト : 実行中の JVM には、 それぞれ関連す る JVM エージ ェ ン ト があ り 、
こ のエージ ェ ン ト が、 プ ロ フ ァ イ ル デー タ を収集 し 、 そのデー タ を ノ ー ド エージ ェ ン ト
へ送信 し ます。 ノ ー ド エージ ェ ン ト は、 そのデー タ を Console へ送信 し ます。
— Java Diagnostics ノ ー ド エージ ェ ン ト : 各管理 ノ ー ド には、 Console と JVM エージ ェ ン ト
と の間で通信を行 う ノ ー ド エージ ェ ン ト があ り ます。
は じ めに
11
JVM エージ ェ ン ト
JVM エージ ェ ン ト は、 標準の Java プ ロ フ ァ イ リ ン グ イ ン タ ーフ ェ イ ス を使用 し て、 実行中のア
プ リ ケーシ ョ ン か ら デー タ を収集 し 、 その配布済みアプ リ ケーシ ョ ン の問題を検出 ・ 修正す る の
に役立つ メ ト リ ッ ク を提供 し ます。
JVM エージ ェ ン ト は、 実行中の JVM と プ ロ セ ス を共有 し 、 ノ ー ド エージ ェ ン ト を経由 し てデー
タ を Console に転送 し ま す。 1 台の管理 ノ ー ド にあ る 複数の ノ ー ド エージ ェ ン ト のそれぞれに複
数の Console を接続で き ます。 ただ し 、 特定の JVM エージ ェ ン ト と の間でア ク テ ィ ブなセ ッ シ ョ
ン を常に持つ こ と がで き る のは、 1 つの Console と 1 つの ノ ー ド エージ ェ ン ト に限 ら れます。
ノ ー ド エージ ェ ン ト
ノ ード エージェ ン ト は、 JVM エージェ ン ト と Console 間の通信を 管理し ま す。 ノ ード エージェ ン
ト を 各管理ノ ード でデーモン (UNIX の場合、 Root 権限が必要 ) ま たはサービ ス (Windows の場合 )
と し て起動する こ と を お勧めし ま す。
関連 ト ピ ッ ク
12
•
35 ページの 「Windows での ノ ー ド エージ ェ ン ト の管理」
•
36 ページの 「UNIX での ノ ー ド エージ ェ ン ト の管理」
第1章
2 Java Diagnostics のイ ン ス ト ール
Java Diagnostics は、 各管理 ノ ー ド に イ ン ス ト ール し ます。 サ イ レ ン ト イ ン ス ト ール オプシ ョ ン を
使用す る と 、 画面を表示せずに イ ン ス ト ールを行 う こ と がで き ます。 OVTA と Java Diagnostics に
合わせて Java ア プ リ ケーシ ョ ン を設定す る 詳細な手順は、 『HP OpenView Transaction Analyzer イ
ン ス ト ール、 設定ガ イ ド 』 を参照 し て く だ さ い。
サポー ト 対象プ ラ ッ ト フ ォ ーム と 必要なシ ス テム
Java Diagnostics は、 エージ ェ ン ト と Console で構成 さ れてい ます。 エージ ェ ン ト と Console を同一
のシ ス テ ム で実行す る こ と も で き ますが、 こ の ド キ ュ メ ン ト では、 推奨構成に従っ て、 別々のシ
ス テ ムに イ ン ス ト ールす る こ と を前提に説明 し ます。
エージ ェ ン ト の要件
JVM エージ ェ ン ト と ノ ー ド エージ ェ ン ト を実行す る シ ス テ ムの要件は次の と お り です。
オペ レ ーテ ィ ン グ シ ス テム と
アーキテ ク チ ャ
Java
ア プ リ ケーシ ョ ン サーバー
•
•
Windows (x86) 2000、 2003
Windows 2003 (Itanium)
•
HP-UX (PA-RISC) 11.0、 11.i v1 (11.11)
•
•
HP-UX 11i v2、 11i v2 September 2004 OE
(Itanium 搭載のシ ス テ ム )
Solaris 5.8 以降 (SPARC 搭載のシ ス テ ム )。
推奨パ ッ チについては、 http://sunsolve.sun.com/pub-cgi/
show.pl?target=patches/J2SE を参照 し て く だ さ い。
•
AIX バージ ョ ン 5.1 ま たは 5.2
•
•
Linux (x86) Red Hat ES/AS 2.1、 3.0
Linux (Itanium)
•
IBM 1.3.1、 1.4.1、 1.4.2_02 以降 (Windows、 AIX、 Linux)
•
Sun 1.3.1、 1.4.1、 1.4.2_02 以降 (Windows)、 Sun 1.4.1、
1.4.2_02 以降 (Linux)
•
BEA 1.4.2_02 以降 (Windows お よ び Linux)
•
HP 1.3.1、 1.4.1、 1.4.2_02 以降 (HP-UX 11.0、 11.i v1 (11.11))
•
HP 1.4.1、 1.4.2_02 以降 (HP-UX 11iv2 以降 )
•
Sun 1.3.1、 1.4.1、 1.4.2_02 以降 (Solaris)
『HP OpenView Transaction Analyzer イ ン ス ト ール、 設定ガ イ ド 』
を参照 し て く だ さ い。
13
パ ッ チ と ア ッ プデー ト
•
JDK ベン ダーが推奨す る パ ッ チはすべて必要です。
•
RedHat Linux 3.0 では、 compat-libstdc++-7.3-2.96.122 が必要
です。 パ ッ ケージの入手 と イ ン ス ト ールについては、
http://rpmfind.net/linux/rpm2html/search.php を参照 し て
く だ さ い。
プロセ ッサと メ モ リ
エージ ェ ン ト は軽量で負荷が低 く な る よ う に設計 さ れてい る た
め、 監視対象アプ リ ケーシ ョ ン と OVTA が必要 と す る 以上の処
理能力お よ び メ モ リ は必要あ り ません。
デ ィ ス ク 容量
10 MB
Console の要件
Java Diagnostics Console を実行す る シ ス テ ム の要件は次の と お り です。
オペ レ ーテ ィ ン グ シ ス テム と
アーキテ ク チ ャ
Console は、 Pure Java ア プ リ ケ ー シ ョ ン で あ る た め、 Java を サ
ポー ト す る ど のプ ラ ッ ト フ ォ ーム で も 実行で き ます。
Java
Java 1.4 以降
パ ッ チ と ア ッ プデー ト
JDK ベン ダーが推奨す る パ ッ チはすべて必要です。
プロセ ッサと メ モ リ
•
500 MHz のプ ロ セ ッ サ ( 最小 )
•
256 MB の メ モ リ ( 最小 )
デ ィ ス ク 容量
10 MB
Java Diagnostics フ ァ イルのデ ィ レ ク ト リ
Java Diagnostics のデフ ォ ル ト の イ ン ス ト ール パ ス は次の と お り です。
•
Windows
C:\Program Files\HP OpenView\HPOvJD
•
HP-UX、 Linux、 お よ び Solaris
/opt/OV/HPOvJD
•
IBM AIX
/usr/lpp/HPOvJD
14
第2章
JVM エージ ェ ン ト を使用するためのアプ リ ケーシ ョ ンの設定
設定手順の詳細は、 『HP OpenView Transaction Analyzer イ ン ス ト ール、 設定ガ イ ド 』 を参照 し て く
だ さ い。
JVM エージ ェ ン ト のオプ シ ョ ン
バージ ョ ン情報を表示す る には、 -Xrunovtajd:version を使用 し ます。 それ以外の場合は、 次の構文
を使用 し てオプシ ョ ン を追加 し ます。
-Xrunovtajd[:version] | [:option[,option],*]
次のオプシ ョ ン (option) を指定で き ます。
appserver_port=port
Console に JVM プ ロ セ ス を 表示す る と き に対応付け る ポー ト
番号を 指定 し ま す。 こ のポー ト 番号は、 ノ ー ド エージ ェ ン ト
で使用 さ れ る ポー ト 番号 と は無関係であ る ため、 Console か ら
管理 ノ ー ド に接続す る と き に オ プ シ ョ ン と し て 指定 で き る
ポー ト 番号 と も 無関係です。
appserver_port= の ポー ト 番号は通信には影響せず、 単に ユー
ザー イ ン タ ー フ ェ イ ス の一部 と し て使用 さ れ ま す。 こ のポー
ト 番号には、 通常、 ア プ リ ケーシ ョ ン サーバーが待ち受け る
ポー ト を指定 し ます。
こ のオプシ ョ ンは、OVTA で問題を検出 し た後、Java Diagnostics
で適切な JVM を見つけ る と き に役立ち ま す。 こ のオプシ ョ ン
が な い場合、 OVTA と Java Diagnostics を 対応付け る のが難 し
く な り ます。
使用例 :
-Xrunovtajd:appserver_port=7001
group_private
JVM と 同 じ グループ ID で実行中の ノ ー ド エージ ェ ン ト に限
り 、JVM を認識で き る よ う に し ます。つま り 、JVM の実行ユー
ザー と 同 じ グループに属すユーザーの ノ ー ド エージ ェ ン ト の
みが JVM を認識で き ます。 こ のオプシ ョ ンは、 Windows には
関係あ り ません。 こ の動作は、 UNIX シ ス テ ム と Linux シ ス テ
ム のデフ ォ ル ト の動作です。
owner_private、 group_private、 public は、 いずれか 1 つに限 り 指
定で き ます。
使用例 :
-Xrunovtajd:group_private
Java Diagnostics のイ ン ス ト ール
15
include=filter1:filter2:... イ ン ス ツル メ ン ト す る ク ラ ス ま たはパ ッ ケージ を、 コ ロ ン で区
:filtern,
切っ た リ ス ト の形式で指定 し ま す。 メ ソ ッ ド レ ベルの フ ィ ル
exclude=filter1:filter2:... タ リ ン グはサポー ト さ れてい ません。
:filtern
バ イ ト コ ー ド イ ン ス ツル メ ン テーシ ョ ン を使用す る JVM エー
ジ ェ ン ト の メ ト リ ッ ク は、 イ ン ス ツル メ ン ト さ れていない ク ラ
ス の メ ソ ッ ド に関す る 出力 を 行い ま せん。 デ フ ォ ル ト のエー
ジ ェ ン ト フ ィ ル タ を含め、 デー タ 収集時に有効だ っ た フ ィ ル
タ の リ ス ト を表示す る には、Java Diagnostics の Console で [BCI]
ア イ コ ン を ク リ ッ ク し ます。
ク ラ ス のフ ィ ルタ リ ン グ によ り 、 オーバーヘッ ド を 最小限にす
る こ と ができ 、ユーザー生成コ ード に集中する こ と ができ ま す。
デ フ ォ ル ト では、 JVM エージ ェ ン ト は、 メ ト リ ッ ク の一部 を
実装す る ために、 ロ ー ド さ れたすべての ク ラ ス のバ イ ト コ ー ド
を イ ン ス ツル メ ン ト し ますが、次のいずれかに属す ク ラ ス は除
外 し ます。
•
アプ リ ケーシ ョ ン サーバー。 パフ ォーマ ン ス の理由に よ り
ます。
•
OpenView の管理ツール。 ユーザー コ ー ド に集中す る ため
です。
•
Java Diagnostics が イ ン ス ツル メ ン ト で き ない、 実装依存の
ク ラ ス のセ ッ ト 。 こ れ ら の ク ラ ス を変更す る こ と はで き ま
せん。
ク ラ ス のフ ィ ルタ はバイ ト コ ード イ ン ス ツ ルメ ン テ ーシ ョ ン
を 使用する メ ト リ ッ ク にのみ適用さ れる ため、 一部のメ ト リ ッ
ク は、フ ィ ルタ に関係なく すべてのク ラ ス の結果を 表示し ま す。
JVM エージ ェ ン ト の フ ィ ル タ は、 Console の フ ィ ル タ と は異な
り ます。 詳細は、 58 ページの 「Session Preferences」 を参照 し て
く だ さ い。
JVM エージ ェ ン ト の フ ィ ル タ は、 JVM の起動時に設定 さ れ、
動的に変更す る こ と はで き ません。
Console の フ ィ ル タ は、 JVM エー ジ ェ ン ト と の セ ッ シ ョ ン を
オープンす る と き に設定 さ れ、 セ ッ シ ョ ン の前後に変更で き ま
す。 ただ し 、 セ ッ シ ョ ン中は変更で き ません。
JVM エージェ ン ト のフ ィ ルタ であ る ク ラ ス を 除外し た場合、 そ
のク ラ ス のフ ィ ルタ を Console 側で解除し て メ ト リ ッ ク を 見よ
う と し ても 、 そのメ ト リ ッ ク を 見る こ と はでき ま せん。
Java Diagnostics は、 次のパ ッ ケージ を除外 し ます。
com.hp.jd.jvmagent.
org.apache.bcel.
com.ibm.jvm.
com.ibm.misc.
16
第2章
デ フ ォ ル ト の フ ィ ル タ は、 次のパ ッ ケージ を 除外 し ま す。
include オプシ ョ ン を使用 し て、 こ のデフ ォ ル ト の動作を無
効にす る こ と がで き ます。
com.jrockit.
p0.
COM.jrockit.
p1.
COM.rsa.
weblogic.
com.sun.
com.bea.
java.
com.beasys.
javax.
com.ibm.
jrockit.
com.tivoli.
org.apache.
org.jboss.
org.ietf.
org.jbossmq.
org.omg.
org.enhydra.
org.w3c.
org.hsql.
org.xml.
EDU.oswego.
sun.
com.iplanet.
sunw.io.
com.netscape.server.http.
sunw.util.
com.evermind.
com.hp.ov.
com.orionserver.
i2.
oracle.
デフ ォ ル ト の フ ィ ル タ は、次のパ ッ ケージ を取 り 込みます。
exclude オプシ ョ ン を使用 し て、 こ のデフ ォ ル ト の動作を無
効にす る こ と がで き ます。
sun.jdbc.odbc.
oracle.jdbc.
weblogic.jdbc.informix4.
oracle.sql.
weblogic.jdbc.mssqlserver4.
oracle.evermind.sql.
weblogic.jdbc.oci.
com.bea.medrec.
weblogic.jdbc.rowset.
com.ibm.samples.
com.bea.p13n.
com.sun.j2ee.blueprints.
com.bea.netuix.
com.sun.ebank.
org.apache.jsp.
org.apache.jasper.
Java Diagnostics のイ ン ス ト ール
17
た と えば、 次の include オプシ ョ ン を使用 し て、 こ のデフ ォ
ル ト の動作を変更で き ます。
-Xrunovtajd:include=com.ibm.ws:com.tivoli
こ の設定には、 次の効果があ り ます。
•
エージ ェ ン ト は、 com.tivoli パ ッ ケージお よ びそのサブ
パ ッ ケージに含ま れ る すべての ク ラ ス を イ ン ス ツル メ
ン ト し ます。 つま り 、 com.tivoli パ ッ ケージ を除外す る
デフ ォ ル ト の動作は打ち消 さ れます。
•
エージ ェ ン ト は、 com.ibm.ws パ ッ ケージ と そのサブ
パ ッ ケージに含ま れ る すべての ク ラ ス を イ ン ス ツル メ
ン ト し ます。 ただ し 、 com.ibm パ ッ ケージに含ま れ、
com.ibm.ws パ ッ ケージに含ま れない ク ラ ス は、 イ ン ス
ツル メ ン ト さ れません。
た と え ば、 次 の よ う に include オ プ シ ョ ン と exclude オ プ
シ ョ ン を組み合わせて、 細かい ク ラ ス 選択を行 う こ と も で
き ます。
-Xrunovtajd:include=com.ibm.ws,exclude=com.
ibm.ws.io
こ の設定は、前の例 と 似てい ますが、com.ibm.ws.io パ ッ ケー
ジ と そのサブパ ッ ケージに含 ま れ る ク ラ ス は、 イ ン ス ツル
メ ン テーシ ョ ン の対象か ら 除外 さ れ ます。 com.ibm.ws パ ッ
ケージに含ま れ る その他の ク ラ ス と 、 com.ibm.ws パ ッ ケー
ジのサブパ ッ ケージの う ち、 io 以外のサブパ ッ ケージの ク
ラ ス は イ ン ス ツ ル メ ン ト さ れ ま す。 com.ibm パ ッ ケージの
ws 以外のサブパ ッ ケージに含ま れ る ク ラ ス は、 デフ ォ ル ト
のルールに従っ て除外 さ れます。
一般に、 include オプ シ ョ ン と exclude オプシ ョ ン を使用 し
て 複数 の パ ッ ケ ー ジ 名 ま た は ク ラ ス 名 を 指定 で き ま す。
ロ ー ド さ れ る ク ラ ス に関す る 動作は、 完全修飾 ク ラ ス 名に
適用 さ れ る 最 も 細かいルール ( フ ィ ル タ ) の定義に従っ て行
われます。
monitor_batch[:file=filename] すべての メ ト リ ッ ク を有効に し 、 収集 し たデー タ を フ ァ イ
ルに送信 し ます。 デフ ォ ル ト の フ ァ イ ル名は javapid.ovtajd
です。 デフ ォ ル ト を無効にす る には、
monitor_batch:file=your_file_name の よ う にオプシ ョ ン を使
用 し ます。
デー タ が収集 さ れ、管理 ノ ー ド の フ ァ イ ルに保存 さ れ る と 、
Console の [Open] ボ タ ン を使用 し て フ ァ イ ル を表示で き ま
す。 Java Diagnostics Console か ら 認識で き る フ ァ イ ル シ ス
テ ム に フ ァ イ ルを コ ピー し な ければな ら ない場合 も あ り ま
す。 詳細は、 39 ページの 「 メ ト リ ッ ク 情報の保存」 を参照
し て く だ さ い。
使用例 :
18
•
デフ ォ ル ト の フ ァ イ ル名を使用す る 場合
-Xrunovtajd:monitor_batch
•
フ ァ イ ル名を指定す る 場合
-Xrunovtajd:monitor_batch:file=mysavedda
ta.ovtajd
第2章
noalloc
オブジェ ク ト 割り 当てメ ト リ ッ ク Object Allocation Statistics
by Class およ び Object Allocation Statistics by Method に適用さ
れる バイ ト コ ード イ ン ス ツ ルメ ン テ ーシ ョ ン を 省略し て、
休止中のオーバーヘッ ド を 軽減し ま す。 noalloc オプシ ョ ン
を 指定する と 、 こ れら のメ ト リ ッ ク は提供さ れま せん。
使用例 :
-Xrunovtajd:noalloc
nohotspots
Java Method Hotspots を サ ポー ト す る バ イ ト コ ー ド イ ン ス
ツル メ ン テーシ ョ ン を省略 し て、 休止中のオーバーヘ ッ ド
を軽減 し ます。 Java Method Hotspots は、 アプ リ ケーシ ョ ン
の存続中は提供 さ れません。 こ のエージ ェ ン ト フ ラ グ を設
定 し て 起動 さ れ た ア プ リ ケ ー シ ョ ン に接続 し て い る
Console では、Java Method Hotspots を有効にす る こ と はで き
ま せん。 そのため、 オープ ン し てい る セ ッ シ ョ ン のダ イ ア
ロ グで こ の メ ト リ ッ ク は表示 さ れ ません。
使用例 :
-Xrunovtajd:nohotspots
noexception
Thrown Exception メ ト リ ッ ク に適用 さ れ る バ イ ト コ ー ド イ
ン ス ツ ル メ ン テ ー シ ョ ン を 省略 し て、 休止中の オーバー
ヘ ッ ド を軽減 し ます。こ のオプシ ョ ン を指定す る と 、Thrown
Exception メ ト リ ッ ク は、 こ の ア プ リ ケーシ ョ ン の存続中、
Console に表示 さ れません。
使用例 :
-Xrunovtajd:noexception
nomemleak
Memory Leak Location の イ ベン ト に適用 さ れ る バ イ ト コ ー
ド イ ン ス ツ ル メ ン テーシ ョ ン を 省略 し て、 休止中の オー
バーヘ ッ ド を 軽減 し ま す。 こ のオプ シ ョ ン を 指定す る と 、
Memory Leak Location 警告は、 こ の ア プ リ ケーシ ョ ン の存
続中、 Console に表示 さ れません。
使用例 :
-Xrunovtajd:nomemleak
owner_private
JVM と 同 じ 有効なユーザー ID で実行中の ノ ー ド エージ ェ
ン ト に限 り 、JVM を認識で き る よ う に し ます。つま り 、JVM
の実行ユーザー と 同 じ ユーザーの ノ ー ド エージ ェ ン ト のみ
が JVM を認識で き ます。 こ のオプシ ョ ンは、 Windows には
関係あ り ません。
owner_private、 group_private、 public は、 いずれか 1 つに限
り 指定で き ます。
使用例 :
-Xrunovtajd:owner_private
public
JVM と 同 じ ホ ス ト で実行中のすべて の ノ ー ド エージ ェ ン
ト が JVM を認識で き る よ う に し ます。Windows には常に こ
の動作が適用 さ れます。
owner_private、 group_private、 public は、 いずれか 1 つに限
り 指定で き ます。
使用例 :
-Xrunovtajd:public
Java Diagnostics のイ ン ス ト ール
19
verbose[:file=filename]
include ま たは exclude の設定な ど、 有効なバ イ ト コ ー ド イ
ン ス ツル メ ン テーシ ョ ン ルールに関す る 情報 と 、 ロ ー ド さ
れ た すべ て の ク ラ ス に対 し て 実行 さ れ た イ ン ス ツ ル メ ン
テーシ ョ ン の個別の結果が出力 さ れ ます。デフ ォ ル ト では、
こ の 情 報 は 標 準 出 力 に 出 力 さ れ ま す。 た と え ば
verbose:file=bci.txt の よ う に フ ァ イ ル名を指定 し て出力先を
変更す る こ と も で き ます。
使用例 :
-Xrunovtajd:verbose
version
JVM エージ ェ ン ト のバージ ョ ン を表示 し 、 Java アプ リ ケー
シ ョ ン を ま っ た く 実行せずにす ぐ に終了 し ま す。 こ のオプ
シ ョ ン は、 他のオプシ ョ ン と と も に使用す る こ と はで き ま
せん。
使用例 :
-Xrunovtajd:version
ア ク セス制限の設定
Java Diagnostics の Console と ノ ー ド エージ ェ ン ト は、ソ ケ ッ ト を経由 し て通信 し ます。ノ ー ド エー
ジ ェ ン ト を 管理 ノ ー ド で起動 し た場合、 そ の ノ ー ド の ソ ケ ッ ト はオープ ン し てお り 、 フ ァ イ ア
ウ ォ ールの内側にあ る ど の Java Diagnostics Console か ら も ア ク セ ス で き ます。
ノ ー ド エージ ェ ン ト へのア ク セ ス を制限す る には、 ノ ー ド エージ ェ ン ト に固有のポー ト 番号を指
定 し 、 JVM エージ ェ ン ト へのア ク セ ス 制限を指定す る 必要があ り ます。 UNIX シ ス テ ム では、 そ
の後で Java Diagnostics Console を適切なユーザーま たはグループ と し て実行 し 、 ノ ー ド エージ ェ
ン ト に接続す る ための該当す る ポー ト 番号を指定 し ます。
ト ン ネ リ ン グ ポー ト を指定 し ない場合、 Java Diagnostics はフ ァ イ ア ウ ォールを通過 し て通信を行
う こ と はで き ません。 フ ァ イ ア ウ ォ ールが使用 さ れてい る 場合、 シ ス テ ム管理者は次のポー ト を
オープンす る 必要があ り ます。
•
ユーザーのデス ク ト ッ プか ら 管理 ノ ー ド にア ク セ スす る と き に使用 さ れ る TCP ポー ト 9501
( ま たは ノ ー ド エージ ェ ン ト が使用 し てい る ポー ト )
•
ノ ー ド エージ ェ ン ト か ら ユーザー デス ク ト ッ プにア ク セ スす る と き に使用 さ れ る
TCP ポー ト 9502
•
ノ ー ド エージ ェ ン ト か ら ユーザー デス ク ト ッ プにア ク セ スす る と き に使用 さ れ る
UDP ポー ト 9502 ~ 9509
UDP ポー ト をすべてオープ ンす る 必要はあ り ませんが、オープンす る 穴 ( ポー ト ) の数に よ り 、同
時にオープ ン で き る セ ッ シ ョ ン の数が決ま り ます。 た と えば、UDP ポー ト 9502 の 1 つのみを オー
プ ンす る と 、 同時に 1 セ ッ シ ョ ン し かア ク テ ィ ブにす る こ と はで き ません。
最小の フ ァ イ ア ウ ォ ール構成は、 内側に TCP ポー ト 9501 を オープ ン し 、 外側に TCP と UDP の両
ポー ト の 9502 を オープ ンす る 構成です。 ポー ト 9501 は、 ユーザーか ら 管理 ノ ー ド への通信のた
めにオープ ン し ます。 こ のポー ト 番号は設定可能です。 こ のポー ト 番号の指定の詳細は、 27 ペー
ジの 「 ノ ー ド エージ ェ ン ト への接続」 を参照 し て く だ さ い。 UDP ポー ト は 8 つ ま でで、 番号は
TCP ポー ト に基づ き ます。 UDP ポー ト は、 管理 ノ ー ド か ら ユーザーへの通信のためにオープンす
る 必要があ り ます。 そのため、 フ ァ イ ア ウ ォ ールが使用 さ れてい る 構成では、 同時にオープ ン で
き る セ ッ シ ョ ンは 8 セ ッ シ ョ ンに限定 さ れ ます。
20
第2章
3 Java Diagnostics の起動
イ ン ス ト ール し た Java Diagnostics の使用手順の概要を次に示 し ます。
1
アプ リ ケーシ ョ ン を設定 し ます。
JVM エージ ェ ン ト と 必要なエージ ェ ン ト オプシ ョ ン を使用す る には、 ご使用の Java アプ リ
ケーシ ョ ン の コ マ ン ド ラ イ ン を変更 し ます。 15 ページの 「JVM エージ ェ ン ト を使用す る た
めのアプ リ ケーシ ョ ン の設定」 を参照 し て く だ さ い。
2
アプ リ ケーシ ョ ン を JVM エージ ェ ン ト と と も に起動 し ます。
3
管理 ノ ー ド の ノ ー ド エージ ェ ン ト を起動 し ます (35 ページの 「 ノ ー ド エージ ェ ン ト の管理」
を参照 )。
4
Java Diagnostics Console を起動 し ます。
5
ノ ー ド エージ ェ ン ト に接続 し ます。
6
[Profile Data] ペ イ ンの JVM ア イ コ ン を ダブル ク リ ッ ク し て、 測定す る JVM エージ ェ ン ト を
開 き ます。
[Session Preferences] ダ イ ア ロ グ ボ ッ ク ス が開 き ます。
7
[Session Preferences] で、 確認す る メ ト リ ッ ク を有効に し ます。
配布前、 つま り 開発環境では、 通常、 すべての項目が有効な ま ま にな っ てい ます。 配布後、
アプ リ ケーシ ョ ンへの影響が気にな る 場合は、 表示 さ れた項目の一部のみを有効にす る こ と
がで き ます。 パフ ォ ーマ ン ス の詳細は、 85 ページの 「実行中のアプ リ ケーシ ョ ン に対す る パ
フ ォ ーマ ン ス オーバーヘ ッ ド 」 を参照 し て く だ さ い。
8
[OK] を ク リ ッ ク し ます。
Java Diagnostics が メ ト リ ッ ク を収集す る の を待ち ます。 待ち時間は、 アプ リ ケーシ ョ ン のサ
イ ズ、 アプ リ ケーシ ョ ンへの負荷、 設定内容に よ り ます。 通常は 5 ~ 30 分です。
収集時間が長いほ ど、 正確な結果が も た ら さ れ ます。
い っ たんアプ リ ケーシ ョ ンに接続す る と 、 Java Diagnostics の メ イ ン ウ ィ ン ド ウ に表示す る 設定 と
メ ト リ ッ ク を選択で き ます。
21
サン プル ア プ リ ケーシ ョ ンの実行
Java Diagnostics には、 発生 し う る 問題の例を示すために、 サン プル アプ リ ケーシ ョ ンが用意 さ れ
てい ます。
•
メ モ リ リ ー ク のアプ リ ケーシ ョ ン
•
ス レ ッ ド のデ ッ ド ロ ッ ク のサン プル
こ れ ら のサ ン プルを実行す る 一般的な手順を示 し ます。
Windows
1
HP OVTA 測定サーバーの Web ページか ら Java Diagnostics Console を起動 し ます。
2
ノ ー ド エージ ェ ン ト を起動 し ます。
3
コ マ ン ド 行か ら サン プル アプ リ ケーシ ョ ン を起動 し ます。
cd %OVTAJD%\demo
java -Xrunovtajd -Xbootclasspath/a:"%OVTAJD%\lib\agent.jar" -jar
ML1.jar
ユーザーの便宜を図 る ため、 Java Diagnostics には、 イ ン ス ト ール時に検出 さ れた JVM を使用
し て ラ イ ブ ラ リ パ ス と ブー ト ク ラ ス パ ス を設定す る ス ク リ プ ト が含まれてい ます。
cd %OVTAJD%\demo
..\bin\run_simple_jvmagent -jar sample_program
sample_program には、 実行す る 具体的なサ ンプル フ ァ イ ル名を使用 し て く だ さ い。
4
メ イ ン ウ ィ ン ド ウ で [Attach] を ク リ ッ ク し 、 サン プル アプリ ケーショ ン を 実行する マシン の
ホス ト 名を 入力し ま す。 ノ ード エージェ ン ト の起動時にポート 番号を 指定し た場合は、 同じ
ポート 番号を 使用し ま す。 指定し なかっ た場合は、 ポート 番号のボッ ク ス を 空のま ま にし ま す。
ホ ス ト を表すア イ コ ン が メ イ ン ウ ィ ン ド ウ に表示 さ れ ます。 し ば ら く す る と 、 サン プル ア
プ リ ケーシ ョ ン も ホ ス ト の子 ノ ー ド と し て表示 さ れ ます。
5
アプ リ ケーシ ョ ン ノ ー ド を ダブル ク リ ッ ク し て、 アプ リ ケーシ ョ ン の監視セ ッ シ ョ ン を開 き
ます。
こ れで、 確認 し たい メ ト リ ッ ク ウ ィ ン ド ウ を開 く こ と がで き ます。
UNIX
1
HP OVTA 測定サーバーの Web ページか ら Java Diagnostics Console を起動 し ます。
2
ノ ー ド エージ ェ ン ト を起動 し ます。
3
コ マ ン ド 行か ら サン プル アプ リ ケーシ ョ ン を起動 し ます。
cd $OVTAJD/demo
export LD_LIBRARY_PATH=$OVTAJD/lib
java -Xrunovtajd -Xbootclasspath/a:$OVTAJD/lib/agent.jar -jar ML1.jar
ユーザーの便宜を図 る ため、 Java Diagnostics には、 イ ン ス ト ール時に検出 さ れた JVM を使用
し て ラ イ ブ ラ リ パ ス と ブー ト ク ラ ス パ ス を設定す る ス ク リ プ ト が含まれてい ます。 こ の ス
ク リ プ ト を使用す る には、 次の よ う に入力 し ます。
cd $OVTAJD/demo
../bin/run_simple_jvmagent -jar sample_program
sample_program には、 実行す る 具体的なサ ンプル フ ァ イ ル名を使用 し て く だ さ い。
22
第3章
4
メ イ ン ウ ィ ン ド ウ で [Attach] を ク リ ッ ク し 、 サン プル アプ リ ケーシ ョ ン を実行す る マシ ン
のホ ス ト 名を入力 し ます。 ノ ー ド エージ ェ ン ト の起動時にポー ト 番号を指定 し た場合は、 同
じ ポー ト 番号を使用 し ます。 指定 し なか っ た場合は、 ポー ト 番号のボ ッ ク ス を空の ま ま に し
ます。
ホ ス ト を表すア イ コ ン が メ イ ン ウ ィ ン ド ウ に表示 さ れ ます。 し ば ら く す る と 、 サン プル ア
プ リ ケーシ ョ ン も ホ ス ト の子 ノ ー ド と し て表示 さ れ ます。
5
アプ リ ケーシ ョ ン ノ ー ド を ダブル ク リ ッ ク し て、 アプ リ ケーシ ョ ン の監視セ ッ シ ョ ン を開 き
ます。
こ れで、 確認 し たい メ ト リ ッ ク ウ ィ ン ド ウ を開 く こ と がで き ます。
メ モ リ リ ー ク のア プ リ ケーシ ョ ン
こ のサン プル アプ リ ケーシ ョ ンは、 メ モ リ リ ー ク の警告が ど の よ う に機能す る か を示 し ます。 こ
のサ ンプルでは、 い く つかのオブジ ェ ク ト を割 り 当て る 簡単な Java プ ロ グ ラ ム と 、 それ ら のオブ
ジ ェ ク ト の一部に対す る 参照を保持す る java.util.Vector オブジ ェ ク ト を使用 し て、 メ モ リ リ ー ク
を起 こ すアプ リ ケーシ ョ ンの動作を示 し ます。
こ のアプ リ ケーシ ョ ンは、 1 時間に約 10 MB の割合で メ モ リ を リ ー ク す る よ う に設定 さ れてい ま
す。こ のデモ アプ リ ケーシ ョ ンは、Java Diagnostics の次の イ ン ス ト ール デ ィ レ ク ト リ にあ り ます。
ソ ース : $OVTAJD/demo/ML1.java
バ イ ナ リ : $OVTAJD/demo/ML1.jar
run_simple_jvmagent ス ク リ プ ト を使用 し て こ のサ ンプルを起動す る 場合は、 ク ラ ス名 ML1 のみを
使用 し て く だ さ い。
こ のサ ン プル ア プ リ ケーシ ョ ン を 測定す る と き には、 ヒ ープがい っ ぱいに な っ て安定 し 、 JVM
エージ ェ ン ト が メ モ リ リ ー ク デー タ を収集す る ま で、 十分な時間を見込んで く だ さ い。 最終的
に、 次の警告が表示 さ れます。
•
Expected OutOfMemoryError 警告 と リ ー ク 率
•
Memory Leak Locations 警告 と リ ー ク の場所
HotSpot 1.4.2 Server JVM のデフ ォ ル ト のガーベジ コ レ ク タ と ヒ ープ サ イ ズ を使用す る と 、 こ のデ
モ ン ス ト レーシ ョ ン プ ロ グ ラ ム の メ モ リ リ ー ク の検出は、 約 20 分後に始 ま り ます。 別の JVM、
ま たは非標準のガーベジ コ レ ク タ や ヒ ープ設定を使用す る と 、 こ の時間はかな り 長 く な る 可能性
があ り ます。
実際の利用環境では、 検出時間は最大 ヒ ープ サ イ ズ、 リ ー ク のサ イ ズ、 アプ リ ケーシ ョ ンの実行
時間、 アプ リ ケーシ ョ ン と ロ ー ド の特性に よ り ますが、 通常は最大で 1 時間です。
サン プル プ ロ グ ラ ム の メ モ リ リ ー ク 警告を示 し ます。
Java Diagnostics の起動
23
次に、 サン プル プ ロ グ ラ ム の ヒ ープ表示を示 し ます。
24
第3章
ス レ ッ ド のデ ッ ド ロ ッ クのサン プル
こ のサン プル アプ リ ケーシ ョ ンは、 Java Diagnostics がデ ッ ド ロ ッ ク し た ス レ ッ ド を ど の よ う に検
出す る か を示 し ます。
こ のサン プルは、 30 秒お き に ス レ ッ ド のペア を作成 し 、 50 ス レ ッ ド の時点で作成を停止 し ます。
こ れ ら の ス レ ッ ド は、共有 ロ ッ ク を使用 し て作業を同期 し ます。 こ のプ ロ グ ラ ムは、 と き ど き ロ ッ
ク を取得す る 順序を逆に し ます。 こ れに よ り 、 最終的にデ ッ ド ロ ッ ク が発生 し 、 ス レ ッ ド のデ ッ
ド ロ ッ ク の警告が生成 さ れ ます。
こ のデモ アプ リ ケーシ ョ ンは、 Java Diagnostics の次の イ ン ス ト ール デ ィ レ ク ト リ にあ り ます。
ソ ース : $OVTAJD/demo/DL1.java
バ イ ナ リ : $OVTAJD/demo/DL1.jar
run_simple_jvmagent ス ク リ プ ト を使用 し て こ のサ ンプルを起動す る 場合は、 ク ラ ス名 DL1 のみを
使用 し て く だ さ い。
ス レ ッ ド のア ク テ ィ ビ テ ィ を確認す る には、 [Thread Histogram] デ ィ ス プ レ イ を使用 し ます。 デ ッ
ド ロ ッ ク し た ス レ ッ ド は、 連続 し た赤いバーで表示 さ れます。
Java Diagnostics の起動
25
26
第3章
Java Diagnostics Console の起動
Console は、HP OVTA Console か ら 、 あ る いは、 ク ラ イ ア ン ト ワー ク ス テーシ ョ ンの Java Web Start
を使用 し て起動で き ます。
HP OVTA の ト ッ プ レベル ト ラ ンザ ク シ ョ ン を右 ク リ ッ ク し 、 Java Diagnostics Console を起動す る
と 、 ト ラ ン ザ ク シ ョ ン コ ン テ キ ス ト 固有の Java Diagnostics メ ト リ ッ ク を収集す る こ と がで き ま
す。 つ ま り 、 Java Diagnostics は、 選択 さ れた ト ラ ン ザ ク シ ョ ン の メ ト リ ッ ク のみ を報告 し ま す。
こ の機能は、 ト ラ ン ザ ク シ ョ ン固有の問題を診断す る のに役立ち ます。 た と えば、 特定の ト ラ ン
ザ ク シ ョ ン タ イ プにのみ発生す る ロ ッ ク 競合の場所を特定で き ます。
ア プ リ ケーシ ョ ンの起動
JVM エージ ェ ン ト と 必要なエージ ェ ン ト オプシ ョ ン を使用で き る よ う にア プ リ ケーシ ョ ン を起
動 し ます。
ノ ー ド エージ ェ ン ト への接続
アプ リ ケーシ ョ ン と ノ ー ド エージ ェ ン ト が実行中の場合、 Java Diagnostics Console の メ イ ン ウ ィ
ン ド ウ か ら シ ス テ ムに接続 し て アプ リ ケーシ ョ ン の メ ト リ ッ ク を表示で き ます。
アプ リ ケーシ ョ ン に接続す る には、 次の手順を実行 し ます。
1
[File] メ ニ ュ ーか ら [Attach] を選択す る か、 [Attach] ボ タ ン を ク リ ッ ク し ます。
2
[Connect to Server] ダ イ ア ロ グ ボ ッ ク ス に、 Java アプ リ ケーシ ョ ンお よ び対応す る ノ ー ド
エージ ェ ン ト を実行 し てい る ホ ス ト 名を入力 し ます。
3
特定のポー ト 番号を持つ場合は、 [Optional Port] ボ ッ ク ス にポー ト 番号を入力 し ます。
ポー ト 番号を指定す る 必要があ る のは、 非標準ポー ト で ノ ー ド エージ ェ ン ト を起動 し た場合
だけです。
次の例にサーバーの指定方法を示 し ます。
Java Diagnostics の起動
27
4
[Connect] を ク リ ッ ク し ます。
し ばら く する と 、 各ア プリ ケ ーショ ン の実行中の JVM が [Profile Data] パネルに表示さ れま す。
5
複数の ノ ー ド エージ ェ ン ト に接続す る 場合は、 こ れ ま での手順を繰 り 返 し ます。
6
メ ト リ ッ ク を確認す る アプ リ ケーシ ョ ン を ダブル ク リ ッ ク し ます。
ダブル ク リ ッ ク す る と 、 [Session Preferences] ダ イ ア ロ グ ボ ッ ク ス が開 き ます。 32 ページの
「デー タ 収集の設定」 を参照 し て く だ さ い。
28
第3章
7
サン プル プ ロ グ ラ ム の場合は、 メ ト リ ッ ク 、 フ ィ ル タ 、 警告のデフ ォ ル ト 設定を その ま ま使
用す る ため、 [OK] を ク リ ッ ク し ます。
Java Diagnostics Console の メ イ ン ウ ィ ン ド ウ が表示 さ れます。
ア プ リ ケーシ ョ ン メ ト リ ッ クの表示
1
[Profile Data] ペイ ン で、 メ ト リ ッ ク を 表示する セッ ショ ン ま たはタ イ ム ス ラ イ ス を 選択し ま す。
2
[Profile Data] ペ イ ンの下にあ る メ ト リ ッ ク カ テ ゴ リ タ ブのいずれか を ク リ ッ ク し ます。
3
メ ト リ ッ ク を確認す る ラ ジオ ボ タ ン を ク リ ッ ク し ます。
4
ダ イ ア ロ グ ボ ッ ク ス の右下にあ る [Display] ボ タ ン を ク リ ッ ク し ます。
Java Diagnostics の起動
29
30
第3章
4 ア プ リ ケーシ ョ ンの監視
Java Diagnostics は、 問題の検出だけで な く 、 問題を 回避す る 目的で も 使用で き ま す。 た と えば、
問題に気づいていない場合で も 、 アプ リ ケーシ ョ ン の効率をチ ェ ッ ク す る ために Java Diagnostics
を使用で き ます。 問題を検出 し やす く す る には、 アプ リ ケーシ ョ ン の主要な メ ト リ ッ ク を定期的
に確認 し て、 基準 と な る プ ロ フ ァ イ ルを確立す る 必要があ り ます。
後で確認で き る よ う に メ ト リ ッ ク 情報を フ ァ イ ルに保存す る 方法については、 39 ページの 「 メ ト
リ ッ ク 情報の保存」 を参照 し て く だ さ い。
コ ー ド や設定 を 変更 し た 後で パ フ ォ ーマ ン ス への影響 を 確認す る た め に ア プ リ ケ ー シ ョ ン を
チ ェ ッ ク す る こ と も で き ます。
Java Diagnostics を Java アプ レ ッ ト の測定に使用す る こ と はで き ません。
デー タ 収集 と 表示の制御
Java Diagnostics には、 情報の収集 と 表示を制御す る ために 2 つの方法が用意 さ れてい ます。
•
JVM エージ ェ ン ト の フ ィ ル タ
JVM エージ ェ ン ト の include オプシ ョ ン と exclude オプシ ョ ンに よ り 、 メ ト リ ッ ク を ク ラ ス名
で フ ィ ル タ リ ン グで き ます。
JVM エージ ェ ン ト の フ ィ ル タ は、 JVM の起動時に設定 さ れ ます。 動的に変更す る こ と はで
き ません。
•
Console の フ ィ ル タ
[Session Preferences] ダ イ ア ロ グ ボ ッ ク ス を使用す る と 、 JVM エージ ェ ン ト と のセ ッ シ ョ ン を
オープンす る と き に測定す る ク ラ ス を指定で き ます。 セ ッ シ ョ ン設定はセ ッ シ ョ ンの前後に
変更で き ますが、 セ ッ シ ョ ン中は変更で き ません。
JVM エージ ェ ン ト の フ ィ ル タ であ る ク ラ ス を除外 し た場合、 その ク ラ ス の フ ィ ル タ を Console 側
でオ フ に し て メ ト リ ッ ク を見 よ う と し て も 、 その メ ト リ ッ ク を見 る こ と はで き ません。
メ ト リ ッ ク デ ィ ス プ レ イ では、 ア イ コ ン を ク リ ッ ク す る こ と に よ り 、 デフ ォ ル ト のエージ ェ ン ト
フ ィ ル タ を含め、 デー タ 収集時に有効だっ た フ ィ ル タ の リ ス ト を表示で き ます。
31
デー タ 収集の設定
Java Diagnostics では、 メ ト リ ッ ク の収集方法を制御 し て、 アプ リ ケーシ ョ ン に関す る 詳細情報の
量 と 考え ら れ る パフ ォ ーマ ン ス の影響を調整で き ます。
Java Diagnostics Console と JVM エ ージ ェ ン ト と の間のセ ッ シ ョ ン を オ ープ ン する と き 、 [Session
Preferences] ウ ィ ン ド ウ で、表示さ れたメ ト リ ッ ク 、フ ィ ルタ 、警告から 必要なも のを 選択でき ま す。
アプ リ ケーシ ョ ン を監視す る ためにセ ッ シ ョ ン を オープ ンす る と き 、 次の操作を行 う こ と がで き
ます。
•
収集す る メ ト リ ッ ク を指定す る
•
特定の ク ラ ス を取 り 込むか除外す る ために フ ィ ル タ を指定す る
•
特定の状態が発生 し た と き に生成す る 警告を有効にす る
関連 ト ピ ッ ク
•
31 ページの 「デー タ 収集 と 表示の制御」
•
85 ページの 「実行中のアプ リ ケーシ ョ ン に対す る パフ ォーマ ン ス オーバーヘ ッ ド 」
表示する メ ト リ ッ ク の選択
監視のオーバーヘ ッ ド を軽減す る ために、 監視セ ッ シ ョ ン の コ ン テ キ ス ト に無関係な メ ト リ ッ ク
を オ フ にす る こ と がで き ます。
[Session Preferences] ダ イ ア ロ グ ボ ッ ク ス で次の手順を実行 し ます。
1
[Metrics] タ ブ を ク リ ッ ク し ます。
2
メ ト リ ッ ク のオ ン と オ フ を切 り 替え る には、 該当す る メ ト リ ッ ク の [Enabled] ボ ッ ク ス を ク
リ ッ ク し ます。
3
必要な メ ト リ ッ ク が有効にな っ てい る こ と を確認 し ます。
4
フ ィ ル タ ま たは警告を変更す る には、 該当す る タ ブ を ク リ ッ ク し ます。
5
[OK] を ク リ ッ ク し て、 変更内容を保存 し ます。
[OK] を ク リ ッ ク し た後で、 メ ト リ ッ ク を確認す る には、 下のパネルか ら 目的の メ ト リ ッ ク を
選択 し 、 [Display] を ク リ ッ ク し ます。
Thrown Exceptions with Stacktraces メ ト リ ッ ク は、デフ ォ ル ト で選択 さ れてい ません。こ の メ ト リ ッ
ク を有効にす る のは、 例外の ス ロ ーの最 も 多い場所を知 る 必要があ る 場合だけに し て く だ さ い。
ス タ ッ ク ト レース を収集す る と 、 アプ リ ケーシ ョ ン のパフ ォ ーマ ン ス が低下す る おそれがあ り ま
す。 詳細は、 66 ページの 「Thrown Exceptions with Stacktraces」 を参照 し て く だ さ い。
選択内容を Java Diagnostics の元の設定に戻すには、[Restore Defaults] ボ タ ン を ク リ ッ ク し ます。
32
第4章
警告の設定
[Session Preferences] ダ イ ア ロ グ ボ ッ ク ス の 3 番目の タ ブでは、 使用可能な警告を無効ま たは有効
にす る こ と がで き ます。
セ ッ シ ョ ン を オープ ンす る と き に、 該当す る ボ ッ ク ス を チ ェ ッ ク し ます。 セ ッ シ ョ ン を オープ ン
す る と き にボ ッ ク ス がチ ェ ッ ク さ れていない場合、 セ ッ シ ョ ン の間、 その警告は使用で き な く な
り ます。
セ ッ シ ョ ン を オープン し た後で使用可能な警告を有効ま たは無効にす る には、Alert Controller を使
用 し ます。 詳細は、 78 ページの 「Alert Controller」 を参照 し て く だ さ い。
選択内容を Java Diagnostics の元の設定に戻すには、[Restore Defaults] ボ タ ン を ク リ ッ ク し ます。
ア プ リ ケーシ ョ ンの監視
33
34
第4章
ノ ー ド エージ ェ ン ト の管理
各管理 ノ ー ド には、Console と JVM エージ ェ ン ト 間の通信を管理す る Java Diagnostics ノ ー ド エー
ジ ェ ン ト が必要です。
ノ ー ド エージ ェ ン ト が実行中でない場合、 Console は JVM エージ ェ ン ト に接続で き ず、 管理 ノ ー
ド に接続 し よ う と す る と 、 Java Diagnostics Console の ス テー タ ス バーに次の メ ッ セージが表示 さ
れます。
Connection to hostname failed.
ノ ー ド エージ ェ ン ト は、 自動的に連続稼動 さ せ る ために、 デーモ ン ま たはサービ ス と し て実行で
き ます。 連続稼動 さ せ る 必要がない場合は、 通常のプ ロ セ ス と し て実行で き ます。 セ ッ ト ア ッ プ
プ ロ セ ス は、 プ ラ ッ ト フ ォ ーム に よ り 異な り ます。
Windows での ノ ー ド エージ ェ ン ト の管理
ノ ー ド エージ ェ ン ト をサービ ス と し て実行する
Java Diagnostics を Windows シ ス テ ム に イ ン ス ト ールす る 場合、 自動的に連続稼動す る よ う に ノ ー
ド エージ ェ ン ト を サービ ス と し て起動で き ます。
ノ ー ド エージ ェ ン ト のサービ ス を開始お よ び停止す る には、 次のいずれかの操作を実行 し ます。
•
コ ン ト ロ ール パネルの [ 管理ツール ] か ら [ サービ ス ] を開 き ます。 サービ ス を選択 し て、
[ 開始 ] ま たは [ 停止 ] を ク リ ッ ク し ます。
[HP OVTA Java Diagnostics Node Agent] サービ ス のプ ロ パテ ィ 画面で、 ポー ト 番号な ど の ノ ー
ド エージ ェ ン ト のパ ラ メ ー タ を指定 し ます。
•
Windows の コ マ ン ド プ ロ ン プ ト ウ ィ ン ド ウ を使用 し て、 次の よ う に入力 し ます。
net start|stop "hp ovta java diagnostics node agent"
Windows のサービ スが実行 さ れている こ と を検証する
ノ ー ド エージ ェ ン ト が Windows のサー ビ ス と し て実行 さ れて い る 場合は、 次の操作 を 行 っ て、
ノ ー ド エージ ェ ン ト が確実に実行 さ れてい る こ と を検証 し ます。
1
[ ス タ ー ト ] メ ニ ュ ーか ら 、 [ コ ン ト ロ ール パネル ] → [ 管理ツール ] の順に選択 し ます。
2
[ サービ ス ] を ダブル ク リ ッ ク し ます。
サービ ス の一覧で、 [HP OVTA Java Diagnostics Node Agent] の状態が 「開始」 にな っ てい る こ
と を確認 し ます。
他のサービ ス と 同様に、 ノ ー ド エージ ェ ン ト サービ ス は こ の コ ン ト ロ ール パネルか ら 開始
ま たは停止で き ます。
ノ ー ド エージ ェ ン ト のサービ ス が一覧にない場合は、 Java Diagnostics ノ ー ド エージ ェ ン ト を
再 イ ン ス ト ール し ます。
ア プ リ ケーシ ョ ンの監視
35
ま た、 Windows コ マ ン ド プ ロ ン プ ト ウ ィ ン ド ウ に 「net start」 と 入力 し て、 実行中のサービ ス の
一覧を確認す る こ と も で き ます。
サービ ス が利用で き ない場合は、 ノ ー ド エージ ェ ン ト を手動で起動 し ます。
ノ ー ド エージ ェ ン ト を手動で起動する
ノ ード エージェ ン ト のサービ ス を 使用でき ない場合は、ノ ード エージェ ン ト を 手動で起動でき ま す。
ノ ー ド エージ ェ ン ト で利用で き る 唯一のオプシ ョ ンは、 ポー ト 番号です。
ノ ー ド エージ ェ ン ト を起動す る には、 Windows の [ ス タ ー ト ] メ ニ ュ ーか ら [HP OpenView] →
[Java Diagnostics] → [NodeAgent] の順に選択 し ます。
ノ ー ド エージ ェ ン ト を コ マ ン ド 行か ら 起動す る には、 次の よ う に入力 し ます。
"%OVTAJD%"\bin\nodeagent [-port nnnn]
ノ ー ド エージ ェ ン ト を停止する
手動で起動 し た ノ ー ド エージ ェ ン ト を停止す る には、 [Ctrl]+[C] キーを押 し ます。
UNIX での ノ ー ド エージ ェ ン ト の管理
ノ ー ド エージ ェ ン ト をデーモ ン と し て実行する
HP OVTA Java Diagnostics を UNIX シ ス テ ムに イ ン ス ト ールす る 場合、自動的に連続稼動す る よ う
に ノ ー ド エージ ェ ン ト をデーモ ン と し て起動で き ます。
デーモ ン の場合、 ノ ー ド エージ ェ ン ト は、 デフ ォ ル ト のポー ト 番号のみ使用で き ます。 別のポー
ト 番号を指定す る には、 JD_NodeAgent フ ァ イ ル を編集 し 、 -port オプシ ョ ン を追加 し て、 ノ ー ド
エージ ェ ン ト を手動で起動す る 必要があ り ます。
ノ ー ド エージ ェ ン ト のデーモ ン を開始ま たは停止す る には、 次の コ マ ン ド を実行 し ます。
•
HP-UX
/sbin/init.d/JD_NodeAgent start|stop
ポー ト 番号な ど のデフ ォ ル ト のオプシ ョ ン を変更す る には、 フ ァ イ ルの内容を編集 し ます。
•
Solaris お よ び Linux
/etc/init.d/JD_NodeAgent start|stop
ポー ト 番号な ど のデフ ォ ル ト のオプシ ョ ン を変更す る には、 フ ァ イ ルの内容を編集 し ます。
UNIX のデーモ ンが実行 さ れている こ と を検証する
UNIX シ ス テ ム 上で ノ ー ド エージ ェ ン ト がデーモ ン と し て実行 さ れて い る 場合は、 次の操作 を
行っ て、 ノ ー ド エージ ェ ン ト が確実に実行 し てい る こ と を検証 し ます。
1
root の権限を使用 し て ロ グ イ ン し ます。
2
次の フ ァ イ ルが存在す る こ と を確認 し ます。
HP-UX
/sbin/init.d/JD_NodeAgent
/sbin/rc3.d/S999JD_NodeAgent
36
第4章
Solaris お よ び Linux
/etc/init.d/JD_NodeAgent
/etc/rc5.d/S999JD_NodeAgent
3
ps コ マ ン ド か、 ま たはご使用のシ ス テ ム上で同等の コ マ ン ド を使用 し ます。
%ps -ef | grep node
次の よ う な結果が表示 さ れ ます。
/opt/OV/HPOvJD/bin/nodeagent -daemon
-daemon は、 ノ ー ド エージ ェ ン ト がデーモ ン と し て実行 し てい る こ と を意味 し ます。
ノ ー ド エージ ェ ン ト のデーモ ン を手動で開始ま たは停止す る には、 次の コ マ ン ド を実行 し ます。
HP-UX
/sbin/init.d/JD_NodeAgent start|stop
Solaris お よ び Linux
/etc/init.d/JD_NodeAgent start|stop
AIX
/etc/JD_NodeAgent start|stop
ノ ー ド エージ ェ ン ト を手動で起動する
ノ ー ド エージ ェ ン ト のデーモ ン を使用で き ない場合、 ま たはア ク セ ス制限を設定す る 必要があ る
場合、 ノ ー ド エージ ェ ン ト を手動で起動で き ます。 ア ク セ ス制限の詳細は、 20 ページの 「ア ク セ
ス制限の設定」 を参照 し て く だ さ い。
Console が管理 ノ ー ド に接続 し て、 アプ リ ケーシ ョ ン を検出 し 、 監視セ ッ シ ョ ン を オープ ンす る 前
に、 ノ ー ド エージ ェ ン ト を実行 し てお く 必要があ り ます。
ノ ー ド エージ ェ ン ト を コ マ ン ド 行か ら 起動す る には、 次の よ う に入力 し ます。
OVTA_JD_installation_directory/bin/nodeagent
ノ ー ド エージ ェ ン ト をバ ッ ク グ ラ ウ ン ド プ ロ セ ス と し て実行で き ます。 デフ ォ ル ト では、 ノ ー ド
エージ ェ ン ト は、 ポー ト 9501 で Console 接続を待ち受け ます。 オプシ ョ ンは 1 つのみです。
-port port_number
別のポー ト 番号を使用す る 場合は、 port_number にポー ト 番号を指定 し ます。
関連 ト ピ ッ ク
•
36 ページの 「 ノ ー ド エージ ェ ン ト をデーモ ン と し て実行す る 」
ノ ー ド エージ ェ ン ト を停止する
手動で起動 し た ノ ー ド エージ ェ ン ト を停止す る には、 単にプ ロ セ ス を中断 し ます。
ア プ リ ケーシ ョ ンの監視
37
ノ ー ド エージ ェ ン ト のア ク セス制限
UNIX で は、 各 JVM プ ロ セ ス の JVM エ ー ジ ェ ン ト が group_private ( デ フ ォ ル ト ) ま た は
owner_private オプシ ョ ン を使用 し てい る 場合、 JVM プ ロ セ ス と 同 じ グループ ID ま たはユーザー
ID を 使用 し て ノ ー ド エージ ェ ン ト を 起動 し ま す。 group_private を 指定 し て起動 し た JVM エー
ジ ェ ン ト は、 同 じ グループ ID で起動 し た ノ ー ド エージ ェ ン ト でのみ認識で き ます。 owner_private
を指定 し て起動 し た JVM エージ ェ ン ト は、 同 じ ユーザー ID で起動 し た ノ ー ド エージ ェ ン ト での
み認識で き ます。
複数の ノ ー ド エージ ェ ン ト の実行
同一の管理 ノ ー ド で複数の ノ ー ド エージ ェ ン ト を実行す る 場合、JVM へのア ク セ ス を制御す る た
めに、 各 ノ ー ド エージ ェ ン ト が別々のポー ト で待ち受け る よ う にす る 必要が あ り ま す。 ノ ー ド
エージ ェ ン ト のポー ト オプ シ ョ ン を 使用 し て、 ポー ト 番号 を 指定 し ま す。 各ユーザー ま たは グ
ループは、 ノ ー ド エージ ェ ン ト に接続す る ために、 ノ ー ド エージ ェ ン ト が ど のポー ト で実行 し て
い る か を覚え てお く 必要があ り ます。
ア ク セ ス のセ キ ュ リ テ ィ を強化す る には、 複数の Java Diagnostics ノ ー ド エージ ェ ン ト を実行 し 、
JVM エージ ェ ン ト に対 し て owner_private ま たは group_private オプシ ョ ン を使用 し ます。 詳細は、
38 ページの 「 ノ ー ド エージ ェ ン ト のア ク セ ス制限」 を参照 し て く だ さ い。
38
第4章
メ ト リ ッ ク情報の保存
Java Diagnostics には、 メ ト リ ッ ク 情報を フ ァ イ ルに保存す る 2 つの方法があ り ます。
•
アプ リ ケーシ ョ ン セ ッ シ ョ ン全体の情報の取得が目的であ る 場合は、 アプ リ ケーシ ョ ンの起
動時に JVM エージ ェ ン ト の monitor_batch オプシ ョ ン を実行で き ます。
「monitor_batch[:file=filename]」 を参照 し て く だ さ い。
•
Console セ ッ シ ョ ンの起動時か ら 現時点ま での情報を入手す る 場合は、 [Save] ボ タ ン を使用で
き ます。
いずれ か の方法 で 保存 し た メ ト リ ッ ク 情報は、 後 で Console の [Open] ボ タ ン を 使用 し て Java
Diagnostics に ロ ー ド で き ます。
こ れ ら のデー タ フ ァ イ ルか ら 実行中のセ ッ シ ョ ン の情報を取得 し て、 後で確認す る こ と も 、 開発
チームにアプ リ ケーシ ョ ンの状態を示す こ と も で き ます。
注記 : 保存 し たデー タ フ ァ イ ルはかな り 大 き く な る 可能性があ り ます。 フ ァ イ ルの保存や転送を
計画 し てい る 場合は、転送速度を上げ る ために フ ァ イ ルを圧縮す る こ と をお勧め し ます。圧縮フ ァ
イ ルは、 Java Diagnostics Console に ロ ー ド す る 前に展開す る 必要があ り ます。 フ ァ イ ルを圧縮す る
と 、 転送時に フ ァ イ ルが壊れ る 可能性 も 低 く な り ます。
ア プ リ ケーシ ョ ンから直接行 う デー タ 保存
monitor_batch オプシ ョ ン を使用 し て情報を保存す る 場合は、 Java Diagnostics がアプ リ ケーシ ョ ン
セ ッ シ ョ ン の起動時以降の情報を取得 し 、 管理 ノ ー ド の フ ァ イ ルに保存 し ます。 情報の取得を停
止す る には、 アプ リ ケーシ ョ ン を停止 し ます。 詳細は、 「monitor_batch[:file=filename]」 を参照 し て
く だ さ い。
Java Diagnostics Console からのデー タ 保存
Console の [Save] ボタ ン で情報を 保存する 場合は、 Java Diagnostics が Console セッ シ ョ ン の起動時
から 現時点ま での情報を 取得し 、 Java Diagnostics Console の実行シス テム のフ ァ イ ルに保存し ま す。
さ ら に、 Console にキ ャ ッ シ ュ さ れたセ ッ シ ョ ン があ る 場合は、 それ ら のセ ッ シ ョ ンの情報 も 保存
で き ます。
情報を Console の ス ナ ッ プシ ョ ッ ト と し て保存す る には、 次の手順を実行 し ます。
1
Console の メ イ ン ウ ィ ン ド ウ を開 き ます。
2
[Profile Data] ツ リ ーか ら 実行中のセ ッ シ ョ ン ま たはキ ャ ッ シ ュ さ れたセ ッ シ ョ ン の ノ ー ド を
選択 し ます。
3
メ イ ン ウ ィ ン ド ウ の コ ン ト ロ ール パネルにあ る [Save] ボ タ ン を ク リ ッ ク し ます。
フ ァ イ ルの保存先を指定で き る フ ァ イ ル選択画面が開 き ます。
4
フ ァ イ ル選択画面で、 ス ナ ッ プシ ョ ッ ト フ ァ イ ルの保存先デ ィ レ ク ト リ を選択 し ます。
5
ス ナ ッ プシ ョ ッ ト フ ァ イ ルの名前を指定 し ます。
フ ァ イ ル名 と し て入力す る 文字列の後には、 拡張子 と し て .ovtajd が自動的に付加 さ れます。
フ ァ イ ル名に拡張子が追加 さ れない よ う にす る には、 フ ァ イ ル名を二重引用符で囲みます。
6
[Save] を ク リ ッ ク し ます。
セ ッ シ ョ ン情報が フ ァ イ ルに書 き 込ま れ ます。
ア プ リ ケーシ ョ ンの監視
39
ト ラ ンザク シ ョ ン固有の問題の診断
OpenView Transaction Analyzer では、 ト ラ ンザ ク シ ョ ン のパフ ォ ーマ ン ス の問題が Java アプ リ ケー
シ ョ ン に起因す る と 思われ る と き 、 その ト ラ ン ザ ク シ ョ ン を指定す る と 、 Java Diagnostics を起動
で き ます。
Java Diagnostics Console を起動 し 、選択 さ れた ト ラ ンザ ク シ ョ ンに限定 さ れた メ ト リ ッ ク の収集を
開始す る には、 次のいずれかの方法を使用 し ます。
•
OVTA の [Application Infrastructure] ビ ュ ーで ト ラ ンザ ク シ ョ ン名を右 ク リ ッ ク し ます。
•
OVTA の [Trace] ビ ュ ーの [Call Graph] で ト ラ ンザ ク シ ョ ン エ ン ト リ を右 ク リ ッ ク し ます。
選択 し た ト ラ ンザ ク シ ョ ン を使用 し て Java Diagnostics を起動す る と 、 その ト ラ ンザ ク シ ョ ンに関
係す る アプ リ ケーシ ョ ン と の間でセ ッ シ ョ ン が確立 さ れ ます。
こ の機能は、 特定の ト ラ ンザ ク シ ョ ン タ イ プにのみ発生す る ロ ッ ク 競合の問題な ど、 ト ラ ンザ ク
シ ョ ン固有の問題を診断す る のに役立ち ます。
ト ラ ン ザ ク シ ョ ン に 関連す る セ ッ シ ョ ン に 接続す る 場合、 セ ッ シ ョ ン に 接続す る ま で Java
Diagnostics がデー タ 収集を開始 し ないため、 し ば ら く の間、 情報は表示 さ れません。
ト ラ ンザク シ ョ ンのフ ィ ル タ リ ング
OVTA Console で ト ラ ン ザ ク シ ョ ン タ イ プ を 選択 し て Java Diagnostics を 起 動 す る 場 合、 Java
Diagnostics は監視対象の ア プ リ ケーシ ョ ン が指定の ト ラ ン ザ ク シ ョ ン タ イ プ を 実行す る と き に
デー タ を収集 し ます。 デー タ の収集範囲には、 指定の ト ラ ンザ ク シ ョ ン タ イ プが実行す る すべて
のサブ ト ラ ンザ ク シ ョ ン も 含ま れます。
次の メ ト リ ッ ク は、 ト ラ ンザ ク シ ョ ン コ ン テ キ ス ト で メ ト リ ッ ク を収集 し ません。
•
Heap Monitor
•
Garbage Collections
•
% of Time spent in Garbage Collections
•
Loaded Classes
•
Method Compilation Count
収集さ れたデータ がト ラ ン ザク ショ ン に関する データ であ る こ と を 示すために、関係のあ る データ
を 表示する 各ウ ィ ン ド ウ には、 ト ラ ン ザク ショ ン 関連であ る こ と を 示すア イ コ ン が表示さ れま す。
こ のア イ コ ン を ク リ ッ ク す る と 、 デー タ 収集時に使用 さ れた ト ラ ンザ ク シ ョ ン タ イ プ名が表示 さ
れ ます。
40
第4章
実行中のア プ リ ケーシ ョ ンの診断
CPU 使用率が予想を超え ている メ ソ ッ ド の特定
CPU 使用率が予想を超え てい る メ ソ ッ ド を特定す る には、 [Java Method Hotspots] デ ィ ス プ レ イ を
使用 し ます。
こ の メ ト リ ッ ク は、 場合に よ り 安定す る のに比較的長い時間を必要 と し 、 複数の CPU を持つ大規
模なシ ス テ ム を対象 と し てい ます。
CPU 使用率が予想を超え てい る か ど う か を判断す る には、 アプ リ ケーシ ョ ンが ど の よ う に機能す
る か を把握す る 必要があ り ます。
こ の メ ト リ ッ ク か ら 、上部に表示 さ れてい る わずか数個の メ ソ ッ ド が大部分の CPU 時間を費や し
てい る こ と がわか る 場合、 パフ ォ ーマ ン ス に問題があ る か、 少な く と も 改善の余地があ り ます。
通常、 最 も 上にあ る エ ン ト リ のパーセ ン ト が 1 桁台の場合、 アプ リ ケーシ ョ ンに CPU のパフ ォー
マ ン ス に関す る 問題は発生 し ていないはずです。 ただ し 、 そのエ ン ト リ が予想外の よ く わか ら な
い メ ソ ッ ド であ る 場合を除 き ます。
関連 ト ピ ッ ク
•
63 ページの 「Java Method Hotspots」
ア プ リ ケーシ ョ ンのロー ド の表示
[Heap Monitor] デ ィ ス プ レ イ を使用 し ます。
こ の メ ト リ ッ ク は、 アプ リ ケーシ ョ ンが ど の程度ビ ジーであ る か を示 し ます。つま り 、 アプ リ ケー
シ ョ ンが多 く の割 り 当て ( 通常、 ロ ー ド レベルに該当 ) を行っ てい る か ど う か、 あ る いはア イ ド
ル状態か ど う か を示 し ます。
メ モ リ リ ー ク が発生 し ない も の と 仮定 し て表示間隔を長め (1 ~ 24 時間 ) に設定す る と 、 ヒ ープ
サ イ ズの全体的な変化 と ガーベジ コ レ ク シ ョ ン パ タ ーンがわか り ます。 こ の設定は、 アプ リ ケー
シ ョ ンの ロ ー ド と ヒ ープへの影響 と の相関関係を把握す る のに役立ち ます。
選択 し た表示領域に灰色の部分 ( ガーベジ コ レ ク シ ョ ン に要 し た時間 ) が多い場合、 ヒ ープがそ
の時点では十分な大 き さ でな く 、 アプ リ ケーシ ョ ン の ロ ー ド に対 し て小 さ すぎ た こ と を意味 し ま
す。 こ の状態は、 特定のハー ド ウ ェ アお よ び ソ フ ト ウ ェ ア構成でのみ ロ ー ド が著 し く 高か っ た こ
と を意味す る 場合 も あ り ます。
関連 ト ピ ッ ク
•
67 ページの 「Heap Monitor」
•
70 ページの 「% of Time spent in Garbage Collections」
ガーベジ コ レ ク シ ョ ンによ る長い休止の有無のチ ェ ッ ク
[Heap Monitor] デ ィ ス プ レ イ で、 最 も 短い時間間隔を選択 し ます。
大部分のガーベジ コ レ ク シ ョ ンの実行時間は、 長 く て も 数秒です。 ただ し 、 非常に大 き い ヒ ープ
では、 数分かか る こ と も あ り ます。
ア プ リ ケーシ ョ ンの監視
41
こ のデ ィ ス プ レ イ は、 ガーベジ コ レ ク シ ョ ン の継続時間 を 数値で示すわ け では あ り ま せんが、
ガーベジ コ レ ク シ ョ ン に よ る 休止に該当す る 非常に幅の広いガーベジ コ レ ク シ ョ ン バーを探す
こ と はで き ます。 ガーベジ コ レ ク シ ョ ンに よ る 休止は、 一時的な SLO 違反の原因 と な る こ と があ
り ます。
断続的かつ非常に長いガーベジ コ レ ク シ ョ ンがご使用の環境での潜在的な問題であ る 場合、 JVM
オプシ ョ ン を使用 し て適切なガーベジ コ レ ク シ ョ ン アルゴ リ ズ ム を選択で き ます。ご使用の JVM
の ド キ ュ メ ン ト を参照 し て く だ さ い。
関連 ト ピ ッ ク
•
67 ページの 「Heap Monitor」
•
68 ページの 「Garbage Collection イ ベン ト 」
ア プ リ ケーシ ョ ンにおけるページ ング問題の有無のチ ェ ッ ク
[Heap Monitor] デ ィ ス プ レ イ で短い時間間隔を選択 し ます。
複数の連続する ガーベジ コ レ ク ショ ン の実行に異常に長い時間がかかる 場合、 ページン グ が頻繁に
行われる ス ラ ッ シン グ と いう 現象が発生し ている 可能性があり ま す。 その場合、 アプリ ケ ーショ ン
に使用でき る 物理メ モリ が小さ く なり すぎ、 指定の最大サイ ズを ま かなう こ と ができ ま せん。
こ の点を検証す る ために、 HP GlancePlus な ど、 プ ラ ッ ト フ ォ ーム内蔵のシ ス テ ム ツールを使用で
き ます。 ス ラ ッ シ ン グの修正方法 と し て次の方法が考え ら れ ます。
•
最大 ヒ ープ サ イ ズ を縮小 し ます。 こ れに よ り 、 アプ リ ケーシ ョ ン でサポー ト す る 最大 ロ ー ド
が軽減 さ れ ます。
•
シ ス テ ムへの他の ロ ー ド を削減 し ます。
•
物理 メ モ リ を追加 し ます。
関連 ト ピ ッ ク
•
67 ページの 「Heap Monitor」
•
68 ページの 「Garbage Collection イ ベン ト 」
System.gc() の過度な呼び出 し の特定
[Heap Monitor] デ ィ ス プ レ イ を使用 し ます。
こ の メ ト リ ッ ク の表示間隔を 1 ~ 20 分の非常に短い間隔に設定す る と 、System.gc() 呼び出 し がパ
フ ォ ーマ ン ス の問題を引 き 起 こ すど う か を判断す る のに役立ち ます。 アプ リ ケーシ ョ ン が こ の メ
ソ ッ ド を呼び出す と 、 ヒ ープ サ イ ズが ロ ーカル マ シ ン の最大値に達 し ない う ちにガーベジ コ レ
ク シ ョ ン が行われ る こ と がわか り ます。 ただ し 、 こ の よ う な状況では、 JVM が時折自動的にガー
ベジ コ レ ク シ ョ ン を呼び出 し てい る 可能性 も あ り ます。
経験則で、 ヒ ープがいっ ぱいでな いと き にガーベジ コ レ ク ショ ン の半分以上が発生し ている よ う
であ れば、 System.gc() 呼び出し が明示的に行われている 可能性があ り ま す。 コ ード を 修正する か、
設定オプショ ン を 使用し て、 ア プリ ケ ーショ ン から こ の明示的な呼び出し を 削除し てく ださ い。 こ
の呼び出し がア プリ ケ ーショ ン の全体的なパフ ォ ーマン ス を 改善する こ と はめっ たにあ り ま せん。
関連 ト ピ ッ ク
42
•
67 ページの 「Heap Monitor」
•
68 ページの 「Garbage Collection イ ベン ト 」
第4章
ガーベジ コ レ ク シ ョ ンにおける所要時間の比率の確認
ガーベジ コ レ ク シ ョ ン の所要時間の比率は、 潜在的な問題を特定す る のに役立ち ま す。 詳細は、
70 ページの 「% of Time spent in Garbage Collections」 を参照 し て く だ さ い。
次の例は、 ほぼ正常な アプ リ ケーシ ョ ンの状態を示 し てい ます。
•
グ ラ フ が低めで平坦
•
赤い線が表す平均値が低い
次の例は、 メ モ リ リ ー ク の可能性があ る アプ リ ケーシ ョ ンの状態を示 し てい ます。
•
ガーベジ コ レ ク シ ョ ン の所要時間の比率が上昇傾向にあ る
•
赤い線が表す平均値が高い
ア プ リ ケーシ ョ ンの監視
43
ヒ ープ サイ ズの適切 さ のチ ェ ッ ク
[Garbage Collections] ディ ス プレ イ を 使用し ま す (68 ページの「 Garbage Collection イ ベン ト 」を 参照 )。
Java メ モ リ リ ー クの確認
Java Diagnostics には、 Java メ モ リ リ ー ク を自動的に検出す る 機能があ り 、 アプ リ ケーシ ョ ンが ク
ラ ッ シ ュ す る 前に問題を警告 し ます。
Java アプ リ ケーシ ョ ンは、 最初の時点で十分な ヒ ープ領域があ る 場合で も 、 し ば ら く の間実行す
る と 、 メ モ リ 不足エ ラ ーで終了す る こ と があ り ます。 こ のエ ラ ーの直接的な原因は、 ガーベジ コ
レ ク タ が十分な ヒ ープ メ モ リ を回収で き ない こ と にあ り ます。
こ の問題の根本的な原因は、 設計や コ ーデ ィ ン グの誤 り に よ り 、 一部のオブジ ェ ク ト が存続す る
こ と にあ り ます。 こ う し た残留オブジ ェ ク ト は、 時間の経過 と と も に累積す る 傾向があ り 、 こ れ
が ヒ ープ を圧迫 し 、 複数のパフ ォ ーマ ン ス の問題を引 き 起 こ し て、 最終的にはアプ リ ケーシ ョ ン
の ク ラ ッ シ ュ につなが り ます。 こ の現象の性質は C/C++ の メ モ リ リ ー ク と は異な り ますが、 Java
の残留オブジ ェ ク ト は一般に メ モ リ リ ー ク と も 呼ばれ ます。
関連 ト ピ ッ ク
•
80 ページの 「Expected OutOfMemory Errors 警告」
•
68 ページの 「Garbage Collection イ ベン ト 」
•
89 ページの 「 メ モ リ リ ー ク 検出の し く み」
メ モ リ リ ー ク の重要度の判別
Java Diagnostics か ら メ モ リ リ ー ク が自動的に報告 さ れ る と き 、 [Garbage Collections] デ ィ ス プ レ イ
と [Heap Monitor] デ ィ ス プ レ イ を使用 し て、 Java メ モ リ リ ー ク の問題を表すオブジ ェ ク ト の残留
を視覚的に確認で き ます。
1 時間以上の長い表示間隔に設定す る と 、 ガーベジ コ レ ク シ ョ ン後の ヒ ープ サ イ ズの傾向 と 上昇
率を簡単に確認で き ます。 こ こ か ら 、 メ モ リ リ ー ク に関す る 危険性を視覚的に評価 し 、 把握 し た
ヒ ープ サ イ ズの合計に基づいて アプ リ ケーシ ョ ン が メ モ リ 不足に陥 る 時点を分、 時間、 ま たは日
単位で予測す る こ と がで き ます。
Heap Monitor と Garbage Collections のデー タ は、確認 さ れた アプ リ ケーシ ョ ンの終了が ヒ ープ領域
の不足に よ る も のか ど う か を判断す る のに役立ち ます。
[Heap Monitor] デ ィ ス プ レ イ は全体的な ヒ ープの限界を示 し 、[Garbage Collections] デ ィ ス プ レ イ は
ガーベジ コ レ ク シ ョ ン後の ヒ ープ サ イ ズ を示 し ます。
Garbage Collections の示す ヒ ープ サ イ ズが ヒ ープの限界に近づ き つつあ る 場合、アプ リ ケーシ ョ ン
は こ の後 メ モ リ 不足にな る か、 すでに メ モ リ 不足に陥っ てい ます。
関連 ト ピ ッ ク
44
•
80 ページの 「Expected OutOfMemory Errors 警告」
•
68 ページの 「Garbage Collection イ ベン ト 」
•
67 ページの 「Heap Monitor」
第4章
過度なオブ ジ ェ ク ト 割 り 当ての特定
[Object Allocation Statistics by Class] デ ィ ス プ レ イ を使用 し ます。
こ の メ ト リ ッ ク は、 最 も 頻繁に割 り 当て ら れ る オブジ ェ ク ト タ イ プ を示 し ます。
ア プ リ ケーシ ョ ン メ モ リ の使用パ タ ーン に対す る 理解が正 し いか ど う か を こ の メ ト リ ッ ク で検
証 し て く だ さ い。 こ の問題を解決す る には、 アプ リ ケーシ ョ ン について理解 し てい る 必要があ り
ます。
関連 ト ピ ッ ク
•
71 ページの 「Object Allocation Statistics by Class」
過度なオブ ジ ェ ク ト 割 り 当て を行 う 部分の特定
[Object Allocation Statistics by Method] デ ィ ス プ レ イ を使用 し ます。
こ の メ ト リ ッ ク は、 大部分のオブジ ェ ク ト を割 り 当て る メ ソ ッ ド を示 し ます。 こ の メ ト リ ッ ク は、
アプ リ ケーシ ョ ン コ ー ド を修正 し て ヒ ープへの圧迫を軽減す る と き に役立ち ます。
関連 ト ピ ッ ク
•
72 ページの 「Object Allocation Statistics by Method」
ス レ ッ ド の異常終了の特定
Abnormal Thread Termination 警告を探 し ます。 こ の警告では、 キ ャ ッ チ さ れていない例外の リ ス ト
を確認で き ます。
次に、 Thread Histogram を使用 し て、 考え ら れ る 問題を調べます。
キ ャ ッ チ さ れていない例外が原因で異常終了 し た ス レ ッ ド は、行が途切れた状態で表示 さ れます。
Java Diagnostics では、 ス レ ッ ド が途中で終了 し たのか、 単に正常に終了 し たのか を見分け る こ と
はで き ません。 こ れには判断が必要ですが、 多 く の場合、 アプ リ ケーシ ョ ン に精通 し ていな く て
も 分析は可能です。
名前、 作成時刻、 特性な ど で類似 し た ス レ ッ ド のグループの う ち、 1 つの ス レ ッ ド のみが終了 し
た場合、 その ス レ ッ ド は強制終了 さ れた可能性が非常に高い と 考え ら れ ます。
ス レ ッ ド の異常終了は、 必ず し も ア プ リ ケーシ ョ ン のダ ウ ン を も た ら すわけではあ り ま せんが、
アプ リ ケーシ ョ ン の応答不能の原因にな る こ と が よ く あ り ます。
関連 ト ピ ッ ク
•
82 ページの 「Abnormal Thread Termination 警告」
•
73 ページの 「Thread Histogram」
存続時間の短い複数のス レ ッ ド の特定
Thread Histogram を使用 し ます。
ス レ ッ ド の作成 と 廃棄にはかな り の コ ス ト がかか り ます。 こ れを効果的に解決す る には、 通常ス
レ ッ ド のプー リ ン グ を行い ます。
ア プ リ ケーシ ョ ンの監視
45
関連 ト ピ ッ ク
•
73 ページの 「Thread Histogram」
•
45 ページの 「ス レ ッ ド の異常終了の特定」
過度な ロ ッ ク 競合の特定
Thread Histogram を使用 し ます。
ど の程度の ロ ッ ク 競合が過度であ る か を答え る のは簡単ではあ り ません。 マルチ ス レ ッ ド アプ リ
ケーシ ョ ン では、通常あ る 程度の ロ ッ ク 競合は発生 し ます。[Thread Histogram] デ ィ ス プ レ イ では、
い く つかの ス レ ッ ド の間で ロ ッ ク 競合、 つま り 赤い部分のパ タ ーン を視覚的に比較す る こ と に よ
り 、 同 じ ロ ッ ク で ク ラ ッ シ ュ す る 複数の ス レ ッ ド を特定で き ます。
競合す る ス レ ッ ド が少ない場合、 あ る ス レ ッ ド の赤い領域 と 別の ス レ ッ ド の赤 と オ レ ン ジの領域
を比較す る 必要があ り ます。 こ の方法は関連す る ロ ッ ク を特定す る のに役立ち ますが、 関連す る
アプ リ ケーシ ョ ン の ス レ ッ ド 処理についての知識が必要です。
BEA 製 WebLogic な ど の一部のア プ リ ケーシ ョ ン は、 1 つの ソ ケ ッ ト か ら 複数の ス レ ッ ド を読み
込むために基本レベルの同期を使用 し ます。 こ の場合、 通常、 関連す る ス レ ッ ド の ロ ッ ク 競合が
非常に高い値で表示 さ れ ます。 こ のパ タ ーン を使用す る ス レ ッ ド が N 個あ る 場合、 ロ ッ ク 競合の
平均は (N-1)/N*100% です。 こ の種の ロ ッ ク 競合が無害に見え る 場合で も 、 ベース と な る JVM と
オペ レーテ ィ ン グ シ ス テ ム のカーネルに無用な圧迫を与え、 通常は よ い結果を も た ら し ま せん。
WebLogic には、 こ の問題を修正で き る オプシ ョ ン があ り ます。詳細は、 ご使用の WebLogic のバー
ジ ョ ンの リ リ ース ノ ー ト を参照 し て く だ さ い。
関連す る ス レ ッ ド の数を削減 し て、 ロ ッ ク 競合の レベルを下げ る こ と も で き ます。 こ の方法が無
効な場合、 ま たはアプ リ ケーシ ョ ン の ス ループ ッ ト が低下す る 場合、 アプ リ ケーシ ョ ン を ク ラ ス
タ と し て配布す る こ と をお勧め し ま す。 同時に、 8 Way サーバーな ど の大型サーバーを よ り 小 さ
い仮想サーバーのグループに再パーテ ィ シ ョ ン化す る こ と も で き ます。
サー ド パーテ ィ 製アプ リ ケーシ ョ ン ではな く 、 独自に開発 し た アプ リ ケーシ ョ ン に ロ ッ ク 競合が
見 ら れ る 場合、 別のアルゴ リ ズ ムやデー タ のグループ化を使用 し て コ ー ド を変更す る こ と も で き
ます。
関連 ト ピ ッ ク
•
80 ページの 「Thread Deadlock 警告」
•
73 ページの 「Thread Histogram」
デ ッ ド ロ ッ ク し たス レ ッ ド の特定
Java Diagnostics では、 デ ッ ド ロ ッ ク し た ス レ ッ ド を特定す る 警告を有効にす る こ と がで き ま す。
次に、 Thread Histogram を使用 し て、 よ り 具体的な情報を取得で き ます。
デ ッ ド ロ ッ ク し た ス レ ッ ド は、 マルチ ス レ ッ ド プ ロ グ ラ ムのエ ラ ーを表 し ます。
ス レ ッ ド のデ ッ ド ロ ッ ク は、 ア プ リ ケーシ ョ ン が応答不能にな る と き の最 も 一般的な原因です。
アプ リ ケーシ ョ ン が ま だ応答す る 場合で も 、 SLO 違反があ る と 予測で き ます。
デ ッ ド ロ ッ ク が検出 さ れた アプ リ ケーシ ョ ン を再起動 し 、 今後のデ ッ ド ロ ッ ク を避け る ためにア
プ リ ケーシ ョ ン の コ ー ド を修正 し て く だ さ い。
46
第4章
関連 ト ピ ッ ク
•
80 ページの 「Thread Deadlock 警告」
•
73 ページの 「Thread Histogram」
待機中のス レ ッ ド の特定
Thread Histogram を使用 し ます (73 ページの 「Thread Histogram」 を参照 )。
ト ラ ンザ ク シ ョ ン を実行中の ス レ ッ ド は、 ロ ッ ク 競合が 0% で、 Running ( 実行中 ) 状態 も で き る
限 り 少ない こ と が理想的な状態です。
過度なス レ ッ ド 作成の特定
過 度 な ス レ ッ ド 作 成 を 特 定 す る に は、 Thread Histogram を 使 用 し ま す (73 ペ ー ジ の 「Thread
Histogram」 を参照 )。
Thread Histogram は、 確認 さ れた期間内に存在 し た ス レ ッ ド の数を示 し ます。 時間間隔を最短 の
1 分に設定す る と 、 同時にア ク テ ィ ブにな る ス レ ッ ド の数を予測で き ま す。 ほ と ん ど のオペ レー
テ ィ ン グ シ ス テ ム では、 1 つのプ ロ セ ス で作成で き る ス レ ッ ド の数が非常に限 ら れてい ます。 こ
の限界を超え る と 、 ク ラ ッ シ ュ が発生す る こ と があ り ます。 Java Diagnostics では、 こ の状態の発
生を示す こ と はで き ませんが、 新 し い ス レ ッ ド 作成が非常に多い場合、 よ り 詳細な分析が必要 と
思われます。
カーネル パ ラ メ ー タ を調整す る こ と で、 1 プ ロ セ ス あ た り の ス レ ッ ド 数の上限を増やす こ と も で
き ます。
動的に作成 さ れ る ス レ ッ ド の数に制限がな く 、 ス レ ッ ド 数が増え続け る と 、 アプ リ ケーシ ョ ン が
ス レ ッ ド リ ー ク を示す場合があ り ます。 こ の場合、 カーネル パ ラ メ ー タ を調整 し て も おそ ら く 効
果はあ り ません。
ア プ リ ケーシ ョ ンの監視
47
過度な メ ソ ッ ド コ ンパイルの特定
Java Diagnostics では、 過度な メ ソ ッ ド コ ンパ イ ルを特定す る 警告を有効にす る こ と がで き ま す。
警告が発生 し た場合は、 [Method Compilation Count] デ ィ ス プ レ イ を使用 し て、 原因 と な っ た具体
的な メ ソ ッ ド ( 複数の場合 も あ る ) を見つけ ます。
メ ソ ッ ド コ ンパ イ ルの数が過剰にな る と 、 JVM が メ ソ ッ ド の再 コ ンパ イ ルに費やす時間が増え、
アプ リ ケーシ ョ ン の応答が遅 く な り ます。
[Method Compilation Count] デ ィ ス プ レ イ には、 コ ンパ イ ル さ れた メ ソ ッ ド が コ ンパ イ ル回数順に
表示 さ れ ます。
過度な メ ソ ッ ド コ ン パ イ ルは き わめ て ま れです。 新 し い JVM の リ リ ー ス では特にそ う ですが、
JVM の欠陥に よ り 、 特定の メ ソ ッ ド の コ ンパ イ ルが繰 り 返 さ れ、 最適化 さ れない場合が と き ど き
あ り ます。 こ れは、 こ の メ ソ ッ ド が、 イ ン タ ープ リ タ に よ る 実行 と コ ンパ イ ル さ れた コ ー ド に よ
る 実行 と の間で揺れ動 く ためです。 こ う し た現象は JVM を圧迫す る ため、 通常、 イ ン タ ープ リ タ
のみで こ の メ ソ ッ ド を実行す る よ り も 、 かな り コ ス ト が高 く な り ます。
コ ンパ イ ルの反復の問題は、SLO 違反を も た ら す場合があ り 、一部ま たはすべての ト ラ ンザ ク シ ョ
ン に影響を与え ます。 HP HotSpot VM の特定の メ ソ ッ ド の コ ンパ イ ルを無効にす る 方法について
は、 JVM の リ リ ース ノ ー ト を参照 し て く だ さ い。 ご使用の JVM に こ う し た メ カ ニ ズ ム がない場
合は、 JVM のバージ ョ ン を ア ッ プグ レー ド ま たはダ ウ ン グ レー ド す る か、 JVM ベン ダーに連絡 し
て く だ さ い。
関連 ト ピ ッ ク
48
•
83 ページの 「Excessive Compilation 警告」
•
76 ページの 「Method Compilation Count」
第4章
ロー ド さ れる ク ラ ス数の過剰の特定
[Loaded Classes] デ ィ ス プ レ イ を使用 し ます。
こ のデ ィ ス プ レ イ は、 ロ ー ド さ れた ク ラ ス のプールが一定の値で安定 し た状態に あ る か ど う か、
つま り 正常な状態か ど う か を確認す る のに役立ち ます。
HotSpot な ど の一部の JVM では、 ロ ー ド さ れた ク ラ ス は専用の メ モ リ 領域に配置 さ れます。 こ の
メ モ リ 領域は、 通常、 ヒ ープ全体に比べかな り 小 さ いため、 アプ リ ケーシ ョ ン が外部 ソ ー ス の新
し い ク ラ ス ま たは実行中に生成 し た新 し い ク ラ ス を繰 り 返 し ロ ー ド す る と 、 こ の領域がい っぱい
にな り 、 アプ リ ケーシ ョ ン が異常終了 し ます。 こ の と き 、 こ の メ ト リ ッ ク の値は絶えず増え続け、
最終的に障害が発生 し ます。
ロ ー ド さ れた ク ラ ス の数が多すぎ る ためにアプ リ ケーシ ョ ンが終了 し た と 判明 し た場合、 JVM オ
プシ ョ ン を使用 し て、 ク ラ ス を格納す る ヒ ープ領域を増やす こ と がで き ます。 ご使用の JVM の ド
キ ュ メ ン ト を参照 し て く だ さ い。 ただ し 、 ロ ー ド す る ク ラ ス の数に制限がない場合、 こ れはアプ
リ ケーシ ョ ンの設計の問題であ る ため、 解決が必要です。
アプ リ ケーシ ョ ン が明確な理由な く ク ラ ッ シ ュ し た こ と が判明 し てい る 場合、 その イ ベン ト の前
に ロ ー ド さ れた ク ラ ス の数が一定の割合で増え てい る か ど う か を チ ェ ッ ク す る 必要が あ り ま す。
一定の割合で増え てい る 場合、 ロ ー ド さ れ る ク ラ ス のために予約 さ れてい る 専用の メ モ リ 領域が
オーバーフ ロ ー し てい る 可能性があ り ます。 こ の領域でオーバーフ ロ ーが発生す る と 、 ヒ ープに
十分な領域があ る 場合で も 、 アプ リ ケーシ ョ ン が異常終了 し 、 場合に よ り OutOfMemoryError メ ッ
セージが表示 さ れ ます。 ク ラ ス格納用の領域を増やす方法については、 JVM の ド キ ュ メ ン ト を参
照 し て く だ さ い。
関連 ト ピ ッ ク
•
76 ページの 「Loaded Classes」
ア プ リ ケーシ ョ ンの監視
49
50
第4章
5 Java Diagnostics Console の使用方法
Java Diagnostics を起動す る と 、 Console の メ イ ン ウ ィ ン ド ウ が表示 さ れます。
メ イン ウィ ン ドウ
主要な コ ン ト ロ ール領域で あ る Java Diagnostics Console には、 デー タ フ ァ イ ルの ロ ー ド やセ ッ
シ ョ ンへの接続な ど の さ ま ざ ま な操作を行 う ボ タ ン が表示 さ れた [Profile Data] パネル と 、 表示す
る 各種 メ ト リ ッ ク を選択す る メ ト リ ッ ク タ ブがあ り ます。
Profile Data
[Profile Data] ペ イ ンには、 セ ッ シ ョ ン情報が ツ リ ー形式で表示 さ れます。
セ ッ シ ョ ン を オープンす る には、JVM のエ ン ト リ を ダブル ク リ ッ ク し ます。[Profile Data] の ツ リ ー
には、 複数の ノ ー ド エージ ェ ン ト と セ ッ シ ョ ン を表示で き ます。
[Profile Data] パネルのア イ コ ン と 記述は、 次の項目を表 し ます。
51
•
ノ ー ド エージ ェ ン ト
•
JVM エージ ェ ン ト
•
オープン し てい る セ ッ シ ョ ン と キ ャ ッ シ ュ さ れてい る セ ッ シ ョ ン
•
タ イ ム ス ラ イ ス エン ト リ
•
警告
ノ ー ド エージ ェ ン ト
ノ ー ド エージ ェ ン ト は、 [Profile Data] ツ リ ーの最上位レベルのエ ン ト リ です。 管理 ノ ー ド の ノ ー
ド エージ ェ ン ト への接続を表 し ます。
ノ ー ド エージ ェ ン ト の接続状態ア イ コ ン
実行中の ノ ー ド エージ ェ ン ト に接続 し てい ます。
ノ ー ド エージ ェ ン ト か ら の応答 を 待 っ て い ま す。 こ の状態が長 く 続 く 場合、 指定 し た
ノ ー ド 名 と ポー ト 番号が正 し いか ど う か を確認 し て く だ さ い。
ノ ー ド エージ ェ ン ト と の接続が切断 さ れたか、 接続を確立で き ません。 指定 し た ホ ス ト
で ノ ー ド エージ ェ ン ト が実行中で あ る こ と を確認 し 、 ノ ー ド エージ ェ ン ト を ダブル ク
リ ッ ク し て接続を再度確立 し ます。
ノ ー ド エージ ェ ン ト と の接続が切断 さ れたか、 接続を確立で き ません。 指定 し た ホ ス ト
で ノ ー ド エージ ェ ン ト が実行中で あ る こ と を確認 し 、 ノ ー ド エージ ェ ン ト を ダブル ク
リ ッ ク し て接続を再度確立 し ます。
JVM エージ ェ ン ト
Java 仮想マシ ン (JVM) エ ン ト リ は、 JVM エージ ェ ン ト に よ り 監視 さ れ る JVM を表 し 、 こ の JVM
は該当す る ノ ー ド エージ ェ ン ト が表すホ ス ト に存在 し ます。 こ のエ ン ト リ は、 対応す る プ ロ セ ス
ID、 アプ リ ケーシ ョ ン名、 実行時間を示 し ます。 こ のアプ リ ケーシ ョ ンは、 Java Diagnostics の監
視対象 と はな り ません。 アプ リ ケーシ ョ ン の監視セ ッ シ ョ ン を オープンす る には、 JVM エ ン ト リ
を ダブル ク リ ッ ク し ます。
JVM エージ ェ ン ト の接続ア イ コ ン
JVM エージ ェ ン ト は実行中で、 正常に機能 し てい ます。
JVM エージ ェ ン ト は、 セ ッ シ ョ ン を オープ ン で き る 状態ではあ り ま せん。 別の Console
がすでに JVM エージ ェ ン ト と の間でセ ッ シ ョ ン を オープ ン し てい る か、 JVM エージ ェ
ン ト に互換性があ り ません。
JVM エージ ェ ン ト が応答 し ません。 ノ ー ド エージ ェ ン ト と JVM エージ ェ ン ト と の接続
が切断 さ れ ま し た。 JVM がダ ウ ン し てい る か、 オーバー ロ ー ド し てい る 可能性があ り ま
す。 JVM が実行中か ど う か を確認 し 、 JVM の応答を待っ てか ら JVM の監視セ ッ シ ョ ン
を オープン し て く だ さ い。
52
第5章
オープ ン し ている セ ッ シ ョ ン と キ ャ ッ シ ュ さ れている セ ッ シ ョ ン
セ ッ シ ョ ン エ ン ト リ は、 Java Diagnostics で監視 さ れてい る シ ス テ ム上のアプ リ ケーシ ョ ン を表 し
ます。 各 ノ ー ド エージ ェ ン ト に複数のセ ッ シ ョ ン が存在す る 場合があ り ます。 セ ッ シ ョ ン エ ン ト
リ には、 シ ス テ ム名が表示 さ れ、 ノ ー ド エージ ェ ン ト と の接続が標準の接続でない場合は接続の
ポー ト 番号 も 表示 さ れ ます。
さ ら に、 接続のプ ロ セ ス ID、 実行中のアプ リ ケーシ ョ ン の名前、 接続の状態が表示 さ れます。
[Cached Application Data] と 書かれ て い る エ ン ト リ は、 キ ャ ッ シ ュ さ れ て い る セ ッ シ ョ ン です。
キ ャ ッ シ ュ さ れたセ ッ シ ョ ン のデー タ は分析に使用す る こ と はで き ますが、実行中の JVM には接
続 し ていないため、 デー タ を さ ら に収集す る こ と はで き ません。 キ ャ ッ シ ュ さ れたセ ッ シ ョ ンは、
実行中の JVM が自動的に終了す る か、ユーザーがア ク テ ィ ブなセ ッ シ ョ ン を ク ロ ーズ し た時点で
作成 さ れ ます。
セ ッ シ ョ ンの状態ア イ コ ン
セ ッ シ ョ ン が実行中で正常に機能 し てい ます。 あ る いは、 セ ッ シ ョ ン が ク ロ ーズ さ れた
も のの、 デー タ の分析は可能です。
JVM エージ ェ ン ト は、 セ ッ シ ョ ン を オープ ン で き る 状態ではあ り ま せん。 別の Console
がすでに JVM エージ ェ ン ト と のセ ッ シ ョ ン を オープ ン し てい ます。
セ ッ シ ョ ン が応答 し ません。 ノ ー ド エージ ェ ン ト と セ ッ シ ョ ン と の接続が切断 さ れま し
た。 JVM がダ ウ ン し てい る か、 オーバー ロ ー ド し てい る 可能性があ り ます。
タ イ ムス ラ イ ス エ ン ト リ
タ イ ム ス ラ イ ス エ ン ト リ は、 アプ リ ケーシ ョ ン の現在の監視セ ッ シ ョ ン の存続時間を表 し ま す。
タ イ ム ス ラ イ ス の存続時間全体のデー タ を表示で き ます。
タ イ ムス ラ イ スのア イ コ ン
タ イ ム ス ラ イ ス の存続時間を表示 し ます。
現在の警告を表 し ます。
[Profile Data] の表示領域の下にあ る メ ト リ ッ ク タ ブ を ア ク テ ィ ブにす る には、 タ イ ム ス ラ イ ス を
選択 し ま す。 JVM セ ッ シ ョ ン の下の階層に複数の タ イ ム ス ラ イ ス を格納す る こ と はで き ま せん。
ク ロ ーズ し たセ ッ シ ョ ンは、 [Profile Data] パネルの下部に積み重ねて表示 さ れ ます。
コ ン ト ロール パネルのボ タ ン
•
Open
表示す る バ ッ チ フ ァ イ ル ま たは ス ナ ッ プシ ョ ッ ト フ ァ イ ルを選択 し ます。 バ ッ チ フ ァ イ ル
を作成す る には、 バ ッ チ モー ド を有効に し て JVM エージ ェ ン ト を実行 し ます。 ス ナ ッ プ
シ ョ ッ ト フ ァ イ ルを作成す る には、 コ ン ト ロ ール パネルの [Save] ボ タ ン を使用 し ます。 詳
細は、 39 ページの 「 メ ト リ ッ ク 情報の保存」 を参照 し て く だ さ い。
Java Diagnostics Console の使用方法
53
保存 し た フ ァ イ ルを開いた後、 オープ ン し てい る セ ッ シ ョ ンの場合 と 同様に メ ト リ ッ ク デー
タ を確認で き ます。
•
Attach
[Connect To Server] ウ ィ ン ド ウ を開 き 、 ホ ス ト の名前 と 、 接続先のポー ト ( オプシ ョ ン ) を指
定 し ます。 ポー ト 番号を指定す る のは、 非標準ポー ト で ノ ー ド エージ ェ ン ト を起動 し た場合
に限 り ます。
•
Save
実行中のセ ッ シ ョ ン ま たはキ ャ ッ シ ュ さ れたセ ッ シ ョ ン のデー タ を ス ナ ッ プシ ョ ッ ト フ ァ イ
ルに保存で き ます。 セ ッ シ ョ ン デー タ を後で分析す る こ と も 、 デー タ フ ァ イ ルを よ り 詳細
に分析す る ために開発者に送信す る こ と も で き ます。
•
Edit
[Alert Controller] ウ ィ ン ド ウ を開 き 、 選択 し た警告の設定を変更で き ます。
[Edit] は、 [Profile Data] パネルの [Alerts] を選択す る と 、 有効にな り ます。
•
Close/Delete
選択 し たセ ッ シ ョ ンの監視セ ッ シ ョ ン を ク ロ ーズす る か、 ノ ー ド エージ ェ ン ト と の接続を削
除 し ます。
— セ ッ シ ョ ン を ク ロ ーズす る には、 [Profile Data] の ツ リ ーでセ ッ シ ョ ン を選択 し 、 [Close]
を ク リ ッ ク し ます。
— ノ ー ド エージ ェ ン ト への接続を削除す る には、 [Profile Data] の ツ リ ーで ノ ー ド エージ ェ
ン ト を選択 し 、 [Delete] を ク リ ッ ク し ます。
54
第5章
こ れは、 ノ ー ド エージ ェ ン ト に接続す る ために使用す る [Connect to Server] ダ イ ア ロ グ ボ ッ ク ス
です。
メ ト リ ッ ク タブ
[Profile Data] パネルの下にあ る 4 つの メ ト リ ッ ク タ ブは、 メ ト リ ッ ク を論理的にグループ分け し
た も のです。 タ イ ム ス ラ イ ス を選択す る と 、 タ ブがア ク テ ィ ブにな り 、 セ ッ シ ョ ン に関す る メ ト
リ ッ ク デー タ を表示で き ます。
•
[Code/CPU] タ ブには、 次の メ ト リ ッ ク があ り ます。
— Java Method Hotspots
— Uncaught Exception Statistics
•
[Memory/Heap] タ ブには、 次の メ ト リ ッ ク があ り ます。
— Heap Monitor
— Garbage Collections イ ベン ト
— % of Time spent in Garbage Collections
— Object Allocation Statistics by Class
— Object Allocation Statistics by Method
Java Diagnostics Console の使用方法
55
•
[Threads/Locks] タ ブには、 次の メ ト リ ッ ク があ り ます。
— Thread Histogram
— Lock Contention
•
[JVM/System] タ ブには、 次の メ ト リ ッ ク があ り ます。
— Method Compilation Count
— Loaded Classes
タ ブ を選択 し た と き に特定の メ ト リ ッ ク がグ レーア ウ ト さ れてい る 場合、 それ ら の メ ト リ ッ ク は
[Session Preferences] ま たは JVM エージ ェ ン ト のオプ シ ョ ン で無効に さ れてい る 可能性が あ り ま
す。 こ れ ら の メ ト リ ッ ク を再度有効にす る には、現在のセ ッ シ ョ ン を ク ロ ーズ し 、新 し いセ ッ シ ョ
ン を再度開始 し 、 [Session Preferences] ウ ィ ン ド ウ で目的の メ ト リ ッ ク を有効に し ます。 58 ページ
の 「Session Preferences」 を参照 し て く だ さ い。
メ ニ ュ ー項目
メ ニ ュ ー バーには、 次の メ ニ ュ ーがあ り ます。
•
[File] — コ ン ト ロ ール パネルのボ タ ン の大部分に相当す る メ ニ ュ ー項目 と [Exit] があ り ます。
•
[Preferences] — 次の コ マ ン ド があ り ます。
— [Look and Feel Preferences]
グ ラ フ ィ カル ユーザー イ ン タ ーフ ェ イ ス のル ッ ク ア ン ド フ ィ ールを選択 し ます。
— [Window Preferences]
–
[Remember main window location]
Java Diagnostics で Console ウ ィ ン ド ウ を再起動時に同 じ 位置に置 く か ど う か を切 り 替
え ます。
–
[Cascade metric windows]
新 し い メ ト リ ッ ク ウ ィ ン ド ウ を開 く と き 、 元の ウ ィ ン ド ウ が新 し い ウ ィ ン ド ウ に隠
れない よ う に し ます。
— [Standard Preferences]
設定を イ ン ポー ト ま たはエ ク ス ポー ト し ます。
ovtajd_preferences.xml を イ ン ポート し て、 新し いイ ン ス ト ールの設定データ を 登録する に
は、 ホ ーム ディ レ ク ト リ にこ のフ ァ イ ルを 配置し 、 [Preferences] メ ニュ ーから [Standard
Preferences] → [Import/Export Preferences] → [Import Preferences] の順に選択し ま す。
— [Delete Preference Backing Store] — バ ッ キ ン グ ス ト アの内容を削除 し ます。 バ ッ キ ン グ ス
ト アは、 Java Diagnostics を実行す る たびに設定 し なければな ら ない多 く の項目を自動的
に格納 し ます。 バ ッ キ ン グ ス ト アの内容を保存す る には、 バ ッ キ ン グ ス ト ア を ホーム
デ ィ レ ク ト リ の ovtajd_preferences.xml と い う 名前の フ ァ イ ルにエ ク ス ポー ト し ます。
56
•
[Demos] — Java Diagnostics のデモ ン ス ト レーシ ョ ンの実行を指示 し ます。 デモ ン ス ト レー
シ ョ ンは、 Java Diagnostics の フル イ ン ス ト ールで イ ン ス ト ール さ れ ます。
•
[Help] — ユーザー ガ イ ド に リ ン ク し ます。
第5章
ス テー タ ス バー
タ ブ パネルの下の ス テー タ ス バーには、 標準の通知が表示 さ れ ます。 警告が発生す る と 、 ス テー
タ ス バーの右下隅に警告ア イ コ ン が表示 さ れます。
Java Diagnostics Console の使用方法
57
Session Preferences
[Session Preferences] ダ イ ア ロ グ ボ ッ ク ス では、 次の操作を行 う こ と がで き ます。
•
収集す る メ ト リ ッ ク を指定す る
•
収集す る 情報を指定す る ための フ ィ ル タ を制御す る
•
特定の警告を有効ま たは無効にす る
注記 : [Session Preferences] に行 う 変更は、 セ ッ シ ョ ン全体で収集す る 情報に影響 し ます。 た と え
ば、 特定の メ ト リ ッ ク ま たは警告を無効にす る と 、 それ ら は使用不能にな り ます。 こ れ ら の設定
を有効にす る には、 新 し いセ ッ シ ョ ン を開始す る 必要があ り ます。
[Session Preferences] で項目を無効にす る メ リ ッ ト は、 Java Diagnostics に よ る 情報収集が削減 さ れ
る ため、 アプ リ ケーシ ョ ンのオーバーヘ ッ ド が削減 さ れ る こ と です。
収集する メ ト リ ッ ク の指定
監視のオーバーヘ ッ ド を削減す る には、 監視セ ッ シ ョ ン に必要ない メ ト リ ッ ク を オ フ に し ます。
注意 : Thrown Exceptions with Stacktraces メ ト リ ッ ク は、 デフ ォ ル ト で選択 さ れてい ません。 こ の
メ ト リ ッ ク を有効にす る のは、 例外の ス ロ ーの最 も 多い場所を知 る 必要があ る 場合だけに し て く
だ さ い。 ス タ ッ ク ト レース を収集す る と 、 アプ リ ケーシ ョ ン のパフ ォ ーマ ン ス が低下す る おそれ
があ り ます。 詳細は、 66 ページの 「Thrown Exceptions with Stacktraces」 を参照 し て く だ さ い。
58
第5章
フ ィ ル タ の指定
[Session Preferences] ダ イ ア ロ グ ボ ッ ク ス の [Filters] タ ブ を使用 し て ク ラ ス を フ ィ ル タ で除外す る
こ と に よ り 、 Java Diagnostics に表示 さ れ る 情報の量を制御で き ます。
フ ィ ル タ は、 inclusive ま たは exclusive の ど ち ら かで、 両方は指定で き ません。
•
inclusive フ ィ ル タ は、 フ ィ ル タ セ ッ ト で指定 さ れた ク ラ ス のみを取 り 込みます。
•
exclusive フ ィ ル タ は、 フ ィ ル タ セ ッ ト で指定 さ れた ク ラ ス をすべて除去 し ます。
新 し い フ ィ ル タ を追加す る こ と も 、 既存の フ ィ ル タ を目的に応 じ て編集す る こ と も で き ます。
•
既存の フ ィ ル タ を編集す る には、 [Filters] タ ブの フ ィ ル タ を ダブル ク リ ッ ク し ます。
•
新 し い フ ィ ル タ を追加す る には、 [Add Filter Set] を ク リ ッ ク し ます。
•
選択内容を Java Diagnostics の元の設定に戻すには、 [Restore Defaults] ボ タ ン を ク リ ッ ク し
ます。
Java Diagnostics は、 デー タ を収集す る ためにバ イ ト コ ー ド イ ン ス ツル メ ン テーシ ョ ン を使用 し ま
す。 バ イ ト コ ー ド イ ン ス ツル メ ン テーシ ョ ン を使用す る JVM エージ ェ ン ト の メ ト リ ッ ク は、 イ
ン ス ツル メ ン ト さ れていない ク ラ ス の メ ソ ッ ド を出力 し ません。 デー タ 収集時に有効だ っ た フ ィ
ル タ の リ ス ト を表示す る には、 ア イ コ ン を ク リ ッ ク し ます。
情報の フ ィ ル タ リ ング
Java Diagnostics で提供す る 情報の量を制御す る には、 ク ラ ス を フ ィ ル タ で除去 し ます。
フ ィ ル タ には、 inclusive と exclusive があ り ます。
•
指定 さ れた ク ラ ス をすべて削除す る フ ィ ル タ を表示す る には、 [Exclusive] ボ タ ン を ク リ ッ ク
し ます。
•
指定 さ れた ク ラ ス のみを取 り 込むフ ィ ル タ を表示す る には、 [Inclusive] ボ タ ン を ク リ ッ ク し
ます。
新 し い フ ィ ル タ を追加す る こ と も 、 既存の フ ィ ル タ を編集す る こ と も で き ます。
Java Diagnostics Console の使用方法
59
フ ィ ル タ の編集
既存の フ ィ ル タ を編集す る には、 次の手順を実行 し ます。
1
[Session Preferences] ダ イ ア ロ グ ボ ッ ク ス で、 [Filters] タ ブ を ク リ ッ ク し ます。
[Session Preferences] ダ イ ア ロ グ ボ ッ ク ス は、 Java Diagnostics の メ イ ン ウ ィ ン ド ウ の [Profile
Data] パネルに表示 さ れてい る JVM を ダブル ク リ ッ ク す る と 開 き ます。
2
[Filters] タ ブの フ ィ ル タ リ ス ト にあ る フ ィ ル タ 名を ダブル ク リ ッ ク し ます。
[Filter Set Editor] が開 き ます。
3
[Filter Set] フ ィ ール ド に フ ィ ル タ リ ン グす る パ ッ ケージの リ ス ト を指定 し ます。 詳細は、
59 ページの 「フ ィ ル タ の指定」 を参照 し て く だ さ い。
フ ィ ル タ の追加
新 し い フ ィ ル タ を追加す る には、 次の手順を実行 し ます。
1
[Session Preferences] ダ イ ア ロ グ ボ ッ ク ス で、 [Filters] タ ブ を ク リ ッ ク し ます。
[Session Preferences] ダ イ ア ロ グ ボ ッ ク ス は、 Java Diagnostics の メ イ ン ウ ィ ン ド ウ の [Profile
Data] パネルに表示 さ れてい る JVM を ダブル ク リ ッ ク す る と 開 き ます。
2
[Add Filter Set] を ク リ ッ ク し ます。
[Filter Set Editor] が開 き ます。
3
[Filter Name] フ ィ ール ド に フ ィ ル タ セ ッ ト の名前を入力 し ます。
4
[Filter Set] フ ィ ール ド に フ ィ ル タ リ ン グす る パ ッ ケージの リ ス ト を指定 し ます。 詳細は、
59 ページの 「フ ィ ル タ の指定」 を参照 し て く だ さ い。
フ ィ ル タ セ ッ ト の指定
フ ィ ル タ セ ッ ト は、 パ ッ ケージ と ク ラ ス を コ ン マで区切っ た リ ス ト です。 ワ イ ル ド カー ド と ピ リ
オ ド は名前の最後にのみ使用で き ますが、 こ れ ら は必須ではあ り ません。 た と えば、 次の よ う に
指定で き ます。
60
第5章
javax.swing.*
com.foo.bar.
mypackage.MyClass
*.util お よ び com.*.util の よ う な名前は無効です。
Java Diagnostics Console の使用方法
61
警告の有効化
[Session Preferences] ダ イ ア ロ グで警告を オ フ にす る と 、 [Alert Controller] ウ ィ ン ド ウ にその警告は
表示 さ れず、 デー タ は ま っ た く 生成 さ れ ません。
•
警告を有効にす る には
セ ッ シ ョ ン を オープンす る と き 、 [Session Preferences] ウ ィ ン ド ウ の [Alerts] タ ブで該当す る
ボ ッ ク ス をチ ェ ッ ク し ます。 セ ッ シ ョ ン を オープン し た と き にボ ッ ク ス がチ ェ ッ ク さ れてい
ない場合、 セ ッ シ ョ ン中その警告は使用で き ません。
•
警告を無効にす る には
[Session Preferences] ウ ィ ン ド ウ の [Alerts] タ ブでボ ッ ク ス がチ ェ ッ ク さ れてい る 場合、 [Alert
Controller] ウ ィ ン ド ウ を使用 し て警告を開始ま たは停止で き ます。
•
選択内容を Java Diagnostics の元の設定に戻すには
[Restore Defaults] ボ タ ン を ク リ ッ ク し ます。
62
第5章
メ ト リ ッ ク デ ィ スプレ イ
Java Diagnostics には、プ ロ グ ラ ムの ス テー タ ス を示す メ ト リ ッ ク ウ ィ ン ド ウ が用意 さ れてい ます。
Java Method Hotspots
各 Java メ ソ ッ ド が消費す る CPU 時間をサン プ リ ン グに基づいて予測 し 、 表示 し ます。
メ ソ ッ ド は、 セ ッ シ ョ ンの存続時間を通 し て CPU 使用率の高い も のか ら 順に並べ ら れ、 対応す る
パ ッ ケージ名、 メ ソ ッ ド 名、 メ ソ ッ ド の引数が表示 さ れ ます。
各 メ ソ ッ ド の情報の上に、 CPU 使用率を視覚的に表現す る 棒グ ラ フ が重ねて表示 さ れ ます。
指針
こ の メ ト リ ッ ク か ら 、上部に表示 さ れてい る わずか数個の メ ソ ッ ド が大部分の CPU 時間を費や し
てい る こ と がわか る 場合、 パフ ォ ーマ ン ス に問題があ る か、 メ ソ ッ ド のパフ ォ ーマ ン ス に改善の
余地があ り ます。
通常、 最 も 上にあ る エ ン ト リ のパーセ ン ト が 1 桁台の場合、 パ フ ォ ーマ ン ス に関す る 問題は発生
し ていない と 考え ら れます。 ただ し 、 そのエ ン ト リ が予想外の メ ソ ッ ド であ る 場合を除 き ます。
詳細
[View] メ ニ ュ ーを使用 し て、 パ ッ ケージ と 引数の表示を オ フ にす る こ と がで き ます。
Java Diagnostics レ ポー ト は、 CPU 時間の使用率が高 く な る 根本原因であ る メ ソ ッ ド を選択 し 、 ほ
と ん ど関係のない他の メ ソ ッ ド は除外 し ます。 こ のテ ク ニ ッ ク に よ り 、 最適化が最 も 必要 と 考え
ら れ る メ ソ ッ ド が報告 さ れます。
一般的な最適化方法は、 メ ソ ッ ド に よ る ヘルパー メ ソ ッ ド の呼び出 し を改善す る こ と です。 こ れ
ら のヘルパー メ ソ ッ ド は、 リ ス ト には含ま れ ません。
パーセ ン ト 値は、 アプ リ ケーシ ョ ン全体に対す る 絶対的な値ではな く 、 Java Diagnostics が報告す
る メ ソ ッ ド のみを対象に計算 さ れた値です。
Java Diagnostics は、 イ ン ラ イ ン化 さ れ る こ と の多い小 さ い メ ソ ッ ド や、 java.* package な ど、 アプ
リ ケーシ ョ ン以外の メ ソ ッ ド については報告 し ません。 こ れは、 ヘルパー メ ソ ッ ド や API の使用
を含めた中心的な アプ リ ケーシ ョ ン ロ ジ ッ ク に集中で き る よ う に と 考え ら れてい ます。
こ の メ ト リ ッ ク ウ ィ ン ド ウ には、 CPU のホ ッ ト ス ポ ッ ト と な る メ ソ ッ ド が検出 さ れ る ま で、 「No
data is available yet. Check again after one minute.」 と い う メ ッ セージが表示 さ れ、 検出後に メ ト リ ッ
ク デー タ が表示 さ れ ます。 検出は通常数秒ほ ど ですが、 まれに こ れ よ り 長い時間を要す る こ と が
あ り ます。
信頼区間の表示 / 非表示を切 り 替え る には、[View] メ ニ ュ ーの [Show Confidence Interval] を選択 し
ます。
注記 : 次の状態が 1 つ以上存在す る 場合、 Java Method Hotspots のデー タ 収集がかな り 遅 く な る 可
能性があ り ます。
•
アプ リ ケーシ ョ ン を実行中のシ ス テ ム に CPU が 1 つ し か存在 し ない
•
アプ リ ケーシ ョ ン があ ま り CPU を消費 し ない
•
アプ リ ケーシ ョ ン が、 プ ロ フ ァ イ ルに含まれない メ ソ ッ ド に よ り 排他的に CPU を消費す る
アプ リ ケーシ ョ ン サーバーや ノ ー ド エージ ェ ン ト の再起動では、 デー タ 収集は改善 さ れません。
Java Diagnostics Console の使用方法
63
信頼区間表示を無効に し 、 各 メ ソ ッ ド の標準的な ヒ ス ト グ ラ ム を表示す る には、 [View] メ ニ ュ ー
の [Show Confidence Interval] の選択を外 し ます。
Thrown Exceptions
例外の ス ロ ー回数を例外 タ イ プ と キ ャ ッ チ し た メ ソ ッ ド に基づいて表示 し ます。 ス タ ッ ク ト レー
ス情報が必要な場合は、 Thrown Exceptions with Stacktraces メ ト リ ッ ク を参照 し て く だ さ い。
整数は、 こ の例外が こ の場所で ス ロ ー さ れ、 こ の メ ソ ッ ド に よ り キ ャ ッ チ さ れた回数を示 し ます。
パーセ ン ト 値は、 こ の例外の ス ロ ーの頻度を、 ス ロ ーが検出 さ れた例外全体に対す る 比率で示 し
ます。
Java Diagnostics は、 イ ン ス ツル メ ン ト さ れ る ク ラ ス でキ ャ ッ チ さ れた例外を収集 し 、 報告 し ます。
つま り 、JVM エージ ェ ン ト の イ ン ス ツル メ ン テーシ ョ ン ルールで除外 さ れていない ク ラ ス を対象
に し ます。 有効な JVM エージ ェ ン ト を確認す る には、 JVM エージ ェ ン ト の verbose オプシ ョ ン を
使用 し ます。
Java Diagnostics は、 JVM エージ ェ ン ト の exclude オプシ ョ ン で除外 さ れた メ ソ ッ ド でキ ャ ッ チ さ
れた例外については収集 と 報告を行い ません。
64
第5章
こ のデ ィ ス プ レ イ には、 ス ロ ー さ れた例外が検出 さ れ る ま で 「No thrown exception detected since the
session opened」 と い う メ ッ セージが表示 さ れ、 例外が検出 さ れ る と 、 例外に関す る 情報が表示 さ
れます。
ウ ィ ン ド ウ には、 イ ベン ト が階層状の ツ リ ー形式で表示 さ れ ます。
[View] メ ニ ュ ーを使用す る と 、 ウ ィ ン ド ウ に表示す る 情報を制御で き ます。
•
[View] → [Show Percentages] の順に選択す る と 、 例外の全件数に対す る 各例外のパーセ ン ト
値の表示 / 非表示が切 り 替わ り ます。 パーセ ン ト 値は、 件数の横に表示 さ れ ます。
•
[View] → [Show Packages] の順に選択す る と 、 Java パ ッ ケージ名の表示 / 非表示を切 り 替え
て、 表示 さ れ る 行の長 さ を変更で き ます。
結果は、 セ ッ シ ョ ンの存続時間を通 し て累積 さ れ ます。
Java Diagnostics Console の使用方法
65
Thrown Exceptions with Stacktraces
アプ リ ケーシ ョ ン が例外を ス ロ ー し た場所を知 る 必要があ る 場合に限 り 、 こ の メ ト リ ッ ク を有効
に し て く だ さ い。
アプ リ ケーシ ョ ン がセ ッ シ ョ ン中に多 く の例外を ス ロ ーす る 場合、 ス タ ッ ク ト レース情報の収集
は、 アプ リ ケーシ ョ ン のパ フ ォ ーマ ン ス に悪影響を及ぼすおそれがあ り ます。 アプ リ ケーシ ョ ン
への影響を最小限にす る には、 セ ッ シ ョ ン の開始時に Thrown Exceptions メ ト リ ッ ク を有効に し 、
ス タ ッ ク ト レ ー ス を収集 し ない よ う に し て く だ さ い。 詳細は、 64 ページの 「Thrown Exceptions」
を参照 し て く だ さ い。
こ の メ ト リ ッ ク は、 例外の ス ロ ー回数を例外 タ イ プ、 キ ャ ッ チ し た メ ソ ッ ド 、 ス ロ ー さ れた場所
の ス タ ッ ク ト レース に基づいて表示 し ます。
整数は、 こ の例外が こ の場所で ス ロ ー さ れ、 こ の メ ソ ッ ド に よ り キ ャ ッ チ さ れた回数を示 し ます。
パーセ ン ト 値は、 こ の例外の ス ロ ーの頻度を、 ス ロ ーが検出 さ れた例外全体に対す る 比率で示 し
ます。
Java Diagnostics は、 イ ン ス ツル メ ン ト さ れ る ク ラ ス でキ ャ ッ チ さ れた例外を収集 し 、 報告 し ます。
つま り 、JVM エージ ェ ン ト の イ ン ス ツル メ ン テーシ ョ ン ルールで除外 さ れていない ク ラ ス を対象
に し ま す。 JVM エージ ェ ン ト の有効な イ ン ス ツ ル メ ン テーシ ョ ン ルール を確認す る には、 JVM
エージ ェ ン ト の verbose オプシ ョ ン を使用 し ます。
Java Diagnostics は、 JVM エージ ェ ン ト の exclude オプシ ョ ン で除外 さ れた メ ソ ッ ド でキ ャ ッ チ さ
れた例外については収集 と 報告を行い ません。
こ のデ ィ ス プ レ イ には、 ス ロ ー さ れた例外が検出 さ れ る ま で 「No thrown exception detected since the
session opened」 と い う メ ッ セージが表示 さ れ、 例外が検出 さ れ る と 、 例外に関す る 情報が表示 さ
れます。
ウ ィ ン ド ウ には、 イ ベン ト が階層状の ツ リ ー形式で表示 さ れ ます。
[View] メ ニ ュ ーを使用す る と 、 ウ ィ ン ド ウ に表示す る 情報を制御で き ます。
•
[View] → [Show Percentages] の順に選択す る と 、 例外の全件数に対す る 各例外のパーセ ン
ト 値の表示 / 非表示が切 り 替わ り ます。 パーセ ン ト 値は、 件数の横に表示 さ れ ます。
•
[View] → [Show Packages] の順に選択す る と 、 Java パ ッ ケージ名の表示 / 非表示を切 り 替
え て、 表示 さ れ る 行の長 さ を変更で き ます。
•
[View] → [Show Stacktraces] の順に選択す る と 、 すべての例外 ノ ー ド の ス ロ ー さ れた ス
タ ッ ク ト レース を展開ま たは縮小す る こ と がで き ます。 特定の ノ ー ド の ス ロ ー さ れた ス タ ッ
ク ト レース だけ を展開ま たは縮小す る には、 その ノ ー ド を ク リ ッ ク し ます。
結果は、 セ ッ シ ョ ンの存続時間を通 し て累積 さ れ ます。
66
第5章
Heap Monitor
時間の経過に伴 う ヒ ープの空 き 領域お よ び使用領域のサ イ ズ と ガーベジ コ レ ク シ ョ ン イ ベン ト
を表示 し ます。
アプ リ ケーシ ョ ン が多 く の割 り 当て を行っ てい る か ど う か ( 通常は ロ ー ド レベルに対応 )、あ る い
はア イ ド ル状態か ど う か を表示 し ます。
指針
•
ガーベジ コ レ ク シ ョ ン に よ る 休止状態を示す非常に幅の広いガーベジ コ レ ク シ ョ ンのバー
を探 し ます。 ガーベジ コ レ ク シ ョ ン に よ る 休止は、 一時的なサービ ス レベル目標 (SLO) 違
反の原因 と な る こ と があ り ます。
断続的で長いガーベジ コ レ ク シ ョ ン に よ る 休止を削減す る には、 JVM オプシ ョ ン を使用 し
てガーベジ コ レ ク シ ョ ンのアルゴ リ ズ ム を変更 し ます。 ご使用の JVM の ド キ ュ メ ン ト を参
照 し て く だ さ い。
•
それで も ガーベジ コ レ ク シ ョ ン イ ベン ト に長い時間がかか る 場合、 ページ ン グの問題が発
生 し てい る 可能性があ り ます。 その場合、 アプ リ ケーシ ョ ンに使用で き る 物理 メ モ リ が小 さ
く な り すぎ、 指定の最大サ イ ズ を ま かな う こ と がで き ません。
修正方法には次の方法があ り ます。
Java Diagnostics Console の使用方法
67
— 最大 ヒ ープ サ イ ズ を縮小 し ます。 こ れに よ り 、 アプ リ ケーシ ョ ン でサポー ト す る 最大
ロ ー ド が軽減 さ れ ます。
— シ ス テ ム か ら 他の ロ ー ド を削除 し ます。
— 物理 メ モ リ を追加 し ます。
•
表示間隔を 1 ~ 20 分の短い間隔に設定 し 、 ヒ ープ サ イ ズが ロ ーカル マシ ン の最大値に達 し
ない う ちにガーベジ コ レ ク シ ョ ン が実行 さ れた場合、 System.gc() の呼び出 し が過度に行われ
てい る 可能性があ り ます。 42 ページの 「System.gc() の過度な呼び出 し の特定」 を参照 し て く
だ さ い。
•
表示間隔を長 く (1 ~ 24 時間 ) 設定す る と 、 ヒ ープ サ イ ズの全体的な変化 と ガーベジ コ レ ク
シ ョ ン パ タ ーン がわか る 場合があ り ます。 こ の設定は、 アプ リ ケーシ ョ ンの ロ ー ド と ヒ ープ
への影響 と の相関関係を把握す る のに役立ち ます。
選択 し た表示領域に灰色の部分が多い場合、 その時点でアプ リ ケーシ ョ ンに課 さ れてい る
ロ ー ド に対 し て ヒ ープが小 さ すぎ た こ と を意味 し ます。
詳細
時計のア イ コ ン を使用す る と 、 デ ィ ス プ レ イ の ス ク ロ ールを い っ たん停止 し 、 再度 ス ク ロ ールす
る こ と がで き ます。
デ ィ ス プ レ イ の ス ク ロ ールを停止す る には、実行中の時計のア イ コ ン を ク リ ッ ク し ます。
デ ィ ス プ レ イ の下の ス テー タ ス行に 「Display Frozen」 と い う メ ッ セージが表示 さ れます。
デ ィ ス プ レ イ の ス ク ロ ールを再開す る には、休止中の時計のア イ コ ン を ク リ ッ ク し ます。
Garbage Collection イ ベン ト
ア プ リ ケーシ ョ ン の実行中に行われた軽量お よ び重量のガーベジ コ レ ク シ ョ ン イ ベン ト を表示
し 、 ガーベジ コ レ ク シ ョ ン の所要時間の比率を予測 し ます。
68
第5章
HotSpot VM では、軽量のガーベジ コ レ ク シ ョ ン イ ベン ト (Lightweight GC Event)は、ほぼ Scavenge
ガーベジ コ レ ク シ ョ ン に相当 し 、重量のガーベジ コ レ ク シ ョ ン イ ベン ト (Heavyweight GC Event)
は Full ガーベジ コ レ ク シ ョ ン に相当 し ます。
指針
•
正常な状態の ヒ ープでは、 Scavenge ガーベジ コ レ ク シ ョ ン の方が Full ガーベジ コ レ ク シ ョ
ン よ り 多 く 行われ ます。
Scavenge ガーベジ コ レ ク シ ョ ン の数が Full ガーベジ コ レ ク シ ョ ン に比べて極端に少ない場
合、 新 し く 生成 さ れ る ヒ ープは非常に小 さ く な り ます。
•
Garbage Collections の示す ヒ ープ サ イ ズが ヒ ープの限界に近づ き つつあ る 場合、 アプ リ ケー
シ ョ ンはすでに メ モ リ 不足に陥っ てい る か、 ま も な く メ モ リ 不足にな り ます。
•
以前生成 さ れた ヒ ープのサ イ ズが小 さ すぎ る 場合、 アプ リ ケーシ ョ ンは メ モ リ 不足にな り ま
す。 ヒ ープ サ イ ズの合計が使用可能な物理 メ モ リ に比べて極端に大 き い場合、 ス ラ ッ シ ン グ
が発生 し ます。
•
ガーベジ コ レ ク シ ョ ン の所要時間は、 5 パーセ ン ト 以下が許容範囲です。 10 パーセ ン ト を超
え る 値は、 通常、 改善の必要があ る こ と を示 し ます。
•
表示間隔を 1 時間以上にす る と 、 潜在的な メ モ リ リ ー ク を特定で き ます。 44 ページの 「 メ
モ リ リ ー ク の重要度の判別」 を参照 し て く だ さ い。
詳細
グ ラ フ の各点は、 ガーベジ コ レ ク シ ョ ン終了後の ヒ ープ サ イ ズ を表 し ます。 こ の点は、 その時点
で使用で き る メ モ リ の大 き さ を示 し ます。
Java Diagnostics は、 ア ダプテ ィ ブ アルゴ リ ズ ム を使用 し て、 ガーベジ コ レ ク シ ョ ン イ ベン ト の
重 さ 、 つま り 軽量か重量か を継続的に再評価 し ます。 その結果、 以前重量 と し て分類 さ れた イ ベ
ン ト が、 後に軽量 と し て分類 さ れ、 Java Diagnostics が イ ベン ト を再描画す る こ と があ り ます。
頻発す る 重量ガーベジ コ レ ク シ ョ ンは潜在的な問題を表 し 、ガーベジ コ レ ク シ ョ ンの所要時間の
パーセ ン ト 値が高 く な り ます。 こ のパーセ ン ト 値は、 ウ ィ ン ド ウ の右下に表示 さ れ ます。
Java Diagnostics は、 ガーベジ コ レ ク シ ョ ン が著 し く 長いか ど う か を判断す る ために、 ア ダプテ ィ
ブ ヒ ュ ー リ ス テ ィ ッ ク を使用 し ます。 著 し く 長い場合、 ガーベジ コ レ ク シ ョ ンは重量 と し てマー
ク さ れ、 そ う でない場合は軽量 と みな さ れます。 時間の経過 と と も にデー タ は正確にな り ます。
注 記 : HotSpot JVM で オ プ シ ョ ン の パ ラ レ ル ガ ー ベ ジ コ レ ク タ を 使 用 す る 場 合、 Garbage
Collections メ ト リ ッ ク は使用で き ま せん。 パ ラ レ ル ガーベジ コ レ ク タ は、 こ の メ ト リ ッ ク を サ
ポー ト す る のに必要な情報をすべて提供す る わけではあ り ません。 次の ス イ ッ チ を使用 し て、 パ
ラ レル ガーベジ コ レ ク タ のいずれか を選択 し て く だ さ い。
-Xincgc
-XX:+UseParallelGC
-XX:+UseConcMarkSweepGC
-XX:+UseParNewGC
-XX:+AggressiveHeap
Java Diagnostics Console の使用方法
69
% of Time spent in Garbage Collections
こ のパーセ ン ト 値は、 ガーベジ コ レ ク シ ョ ンの所要時間の推定値です。
指針
•
赤い横線は、 ガーベジ コ レ ク シ ョ ン の所要時間の現在の平均値を示 し ます。
•
値が 5 パーセ ン ト 以下で、 一定かゆ っ く り と 上昇 し てい る 場合は、 値が低 く 、 許容範囲内 と
みな さ れます。
•
値が常時 10 パーセ ン ト を超え る 場合、 改善の余地があ り ます。
詳細
改善には、 次の 2 つの方法があ り ます。
•
パフ ォ ーマ ン ス を改善す る ために ヒ ープ パ ラ メ ー タ を調整 し ます。 HP HotSpot VM の場合
は、 -Xverbosegc オプシ ョ ン と HPjtune を使用 し ます。 他の HotSpot VM の場合は、 -Xloggc オ
プシ ョ ン と HPjtune を使用 し ます。
•
ヒ ープ を調整済みの場合は、 ヒ ープに対す る アプ リ ケーシ ョ ン の圧迫を軽減 し ます。 つま
り 、 オブジ ェ ク ト の割 り 当て率を削減す る ために、 次の代替手段を実行 し ます。
— オブジ ェ ク ト の再利用
— メ モ リ 効率の悪いアルゴ リ ズ ム の変更
オブジ ェ ク ト 割 り 当て統計を使用す る と 、 改善が必要な領域を特定で き ます。
70
第5章
Object Allocation Statistics by Class
オブジ ェ ク ト 割 り 当ての統計を、 割 り 当て ら れたオブジ ェ ク ト タ イ プに基づいて表示 し ます。
指針
通常の大規模な Java アプ リ ケーシ ョ ンは、 多 く の String 型オブジ ェ ク ト を割 り 当て ます。 こ の値
は、 すべての割 り 当ての 25 パーセ ン ト に上 り ます。 他の タ イ プ、 特にアプ リ ケーシ ョ ン定義の タ
イ プが こ の値に近いか超え てい る 場合、 非効率な コ ー ド であ る 可能性があ り ます。
詳細
イ ン ス ツル メ ン ト さ れ、 JVM エージ ェ ン ト の verbose フ ラ グで表示 さ れ る こ れ ら の ク ラ ス につい
ては、 割 り 当て を報告す る ためにすべての メ ソ ッ ド のすべてのオブジ ェ ク ト 割 り 当てが イ ン ス ツ
ル メ ン ト さ れ ます。 ただ し 、 オーバーヘ ッ ド を最小限にす る ためにサ ン プ リ ン グが行われ る こ と
か ら 、 こ の メ ト リ ッ ク では割 り 当ての総数ではな く 、パーセ ン ト 値が報告 さ れ ます。 こ れ ら のパー
セ ン ト 値は、 アプ リ ケーシ ョ ン全体に対す る 絶対的な値ではな く 、 イ ン ス ツル メ ン ト さ れた ク ラ
ス での割 り 当て を対象に計算 さ れてい ます。
こ のサン プ リ ン グに よ り オーバーヘ ッ ド を最小限にす る こ と がで き 、 ユーザー コ ー ド に集中す る
こ と がで き ます。 アプ リ ケーシ ョ ン サーバー ク ラ ス に関す る 割 り 当て統計を検出す る には、 JVM
エージ ェ ン ト のオプシ ョ ン と し て フ ィ ル タ リ ン グ フ ラ グ include お よ び exclude を使用 し ます。
報告 さ れ る デー タ はセ ッ シ ョ ン の存続時間を通 し て累積 さ れ、 セ ッ シ ョ ン が長 く 続 く ほ ど正確に
な り ます。
Java Diagnostics Console の使用方法
71
Object Allocation Statistics by Method
大部分のオブジ ェ ク ト を割 り 当て る メ ソ ッ ド を示 し ます。
こ の メ ト リ ッ ク は、 アプ リ ケーシ ョ ン コ ー ド を修正 し て ヒ ープへの圧迫を軽減す る と き に役立ち
ます。
指針
最適化 し た方が よ い メ ソ ッ ド が上部に表示 さ れ ます。
72
第5章
詳細
イ ン ス ツル メ ン ト さ れ、 JVM エージ ェ ン ト の verbose フ ラ グで表示 さ れ る こ れ ら の ク ラ ス につい
ては、 割 り 当て を報告す る ためにすべての メ ソ ッ ド のすべてのオブジ ェ ク ト 割 り 当てが イ ン ス ツ
ル メ ン ト さ れ ます。 ただ し 、 オーバーヘ ッ ド を最小限にす る ためにサ ン プ リ ン グが行われ る こ と
か ら 、 こ の メ ト リ ッ ク では割 り 当ての総数ではな く 、パーセ ン ト 値が報告 さ れ ます。 こ れ ら のパー
セ ン ト 値は、 アプ リ ケーシ ョ ン全体に対す る 絶対的な値ではな く 、 イ ン ス ツル メ ン ト さ れた ク ラ
ス での割 り 当て を対象に計算 さ れてい ます。
こ のサン プ リ ン グに よ り オーバーヘ ッ ド が最小限にな り 、 ユーザー コ ー ド に集中す る こ と がで き
ます。 アプ リ ケーシ ョ ン サーバー ク ラ ス に関す る 割 り 当て統計を検出す る には、 JVM エージ ェ
ン ト のオプシ ョ ン と し て フ ィ ル タ リ ン グ フ ラ グ include お よ び exclude を使用 し ます。
報告 さ れ る デー タ は、 セ ッ シ ョ ン の存続時間を通 し て累積 さ れ る ため、 セ ッ シ ョ ン が長 く 続 く ほ
ど正確にな り ます。
Thread Histogram
時間の経過に伴 う ス レ ッ ド の状態の変化を表示 し ます。 ス レ ッ ド デー タ は タ イ ム ス ラ イ ス に表示
さ れ ます。 各 タ イ ム ス ラ イ ス の色付 き のバーは、 ス レ ッ ド が各状態で費や し た時間の比率を表 し
ます。 報告 さ れ る 状態は次の と お り です。
•
Waiting
ス レ ッ ド は、 Object.wait() メ ソ ッ ド に よ り 中断 し てい ます。
•
Lock Contention
ス レ ッ ド は、 別の ス レ ッ ド がすでに ロ ッ ク を取得 し てい る Java モニ タ に入 る ために待機 し て
い ます。
•
Running
上記以外の状態
指針
•
Thread Histogram の赤い部分が多い場合、 重大な ロ ッ ク 競合が発生 し てお り 、 通常はそれが
潜在的な問題です。 緑の部分が多い場合は、 関連す る ス レ ッ ド を処理で き る 能力が潜在的に
存在す る こ と を示 し ます。
•
ロ ー ド がない場合、 ト ラ ンザ ク シ ョ ン のために処理を行 う ス レ ッ ド の状態は Waiting と な り 、
緑色で表示 さ れ ます。
•
正常に終了 し た ス レ ッ ド ま たはキ ャ ッ チ さ れていない例外が原因で異常終了 し た ス レ ッ ド
は、 行が途切れた状態で表示 さ れます。
•
存続時間の短い複数の ス レ ッ ド は、 見かけ上空白の行で表示 さ れ ます。 同時に、 下部に表示
さ れ る ス レ ッ ド 数が大 き く な り ます。
•
ロ ッ ク 競合は赤 く 表示 さ れます。
•
デ ッ ド ロ ッ ク し てい る 複数の ス レ ッ ド があ る 場合、 こ れ ら の ス レ ッ ド は特定の時点か ら 時間
の 100 パーセ ン ト が ロ ッ ク 競合 ( 赤 ) の状態にな り ます。 こ の時点でデ ッ ド ロ ッ ク の発生を
特定で き ます。
Java Diagnostics Console の使用方法
73
詳細
X 軸方向は タ イ ム ス ラ イ ス を示 し 、 Y 軸方向は、 各 タ イ ム ス ラ イ ス において各状態が占め る 時間
の比率を示 し ます。つま り 、Y 軸方向では、タ イ ム ス ラ イ ス に対す る 積み上げ棒グ ラ フ を表 し ます。
注記 : JVM のベン ダーが異な る と 、 Java モニ タ の ロ ッ ク 処理に対 し て使用す る 内部実装 も 異な り
ます。 そのため、 ロ ッ ク 競合の表示パ タ ーン も 異な り ます。 ロ ッ ク 競合の結果を比較す る 際には、
同 じ ベン ダーの JVM を比較 し て く だ さ い。
Lock Contention
ロ ッ ク 競合の統計を表示 し ます。
各 メ ソ ッ ド のパーセ ン ト 値は、 その メ ソ ッ ド で発生が確認 さ れた ロ ッ ク 競合全体に占め る 比率を
示 し ます。 た と えば、 実行中に ロ ッ ク 競合が 1 イ ン ス タ ン ス 存在 し た場合、 メ ソ ッ ド は 100 パー
セ ン ト を示 し ます。 そのため、 アプ リ ケーシ ョ ン の ロ ッ ク 競合の数がかな り 大 き く ない限 り 、 メ
ソ ッ ド の ロ ッ ク 競合のパーセ ン ト 値が高 く て も 問題はあ り ません。
74
第5章
ロ ッ ク 競合は、 同期 さ れた複数の メ ソ ッ ド 、 ま たは同期 さ れたブ ロ ッ ク を含む メ ソ ッ ド のいずれ
かで検出 さ れ る こ と があ り ます。
指針
•
実行中のアプ リ ケーシ ョ ンの ロ ッ ク 競合は、 必ず し も 問題を示すわけではあ り ません。
•
アプ リ ケーシ ョ ン に ロ ッ ク 競合の問題があ る と 思われ る 場合、 [Lock Contention] デ ィ ス プ レ
イ で上位の メ ソ ッ ド に着目 し て く だ さ い。
•
Thread Histogram も 、 重大な ロ ッ ク 競合の有無を判断す る 際に役立ち ます。 他のシ ス テ ム レ
ベル ツール も 、 過度な ロ ッ ク 競合の有無を判断す る 際に役立ち ます。
詳細
こ の メ ト リ ッ ク では、 オーバーヘ ッ ド を最小にす る ためにサン プ リ ン グが行われます。 そのため、
ロ ッ ク 競合に費や さ れた実際の時間でな く 、 パーセ ン ト 値が表示 さ れ ます。
報告 さ れ る デー タ は、 セ ッ シ ョ ンの存続時間を通 し て累積 さ れ ます。
JVM のベン ダーが異な る と 、 Java モニ タ の ロ ッ ク 処理に対 し て使用す る 内部実装 も 異な り ま す。
そのため、 ロ ッ ク 競合の表示パ タ ーン も 異な り ます。 ロ ッ ク 競合の結果を比較す る 際には、 同 じ
ベン ダーの JVM を比較 し て く だ さ い。
注記 : IBM Java 仮想マシ ン を使用中の場合、 Lock Contention メ ト リ ッ ク は、 コ ンパ イ ラ を オ フ に
し た場合に限 り 使用で き ます。
Java Diagnostics Console の使用方法
75
Method Compilation Count
セ ッ シ ョ ン のオープ ン以降 コ ンパ イ ル さ れたすべての メ ソ ッ ド の リ ス ト と 、 各 メ ソ ッ ド の コ ンパ
イ ル回数を表示 し ます。
セ ッ シ ョ ンのオープン後、こ の メ ト リ ッ ク の ウ ィ ン ド ウ には、「No methods compiled since the session
opened」 と 表示 さ れ、 メ ソ ッ ド コ ンパ イ ルが行われた時点で メ ト リ ッ ク デー タ が表示 さ れます。
指針
•
こ の メ ト リ ッ ク の正常な値は 1 桁の数値です。
•
上位項目の値が他のエ ン ト リ に比べて極端に大 き く 、 値が増え続けてい る 場合、 メ ソ ッ ド の
過度な コ ンパ イ ルが行われてい る 可能性があ り ます。
•
通常、 メ ソ ッ ド の コ ンパ イ ルは 1 回か数回程度であ り 、 統計結果は変化が少な く 、 大 き い数
値を示すエ ン ト リ はあ り ません。
ただ し 、 JVM では、 1 つ以上の メ ソ ッ ド が繰 り 返 し コ ンパ イ ル さ れ る パフ ォーマ ン ス の問題
が発生す る 場合があ り ます。 こ う し た問題は、 リ ス ト 内で 1 つのエ ン ト リ が明 ら かに大 き な
値を示 し 、 その値が時間 と と も に増え続け る 場合に発生 し てい ます。
Loaded Classes
Java Diagnostics は、 ロ ー ド さ れた ク ラ ス の数を示 し ます。 こ の数は時間の経過 と と も に安定す る
はずです。
76
第5章
指針
•
正常な値は、 狭い範囲内を上下 し ます。 通常は、 ロ ー ド さ れ る 全 ク ラ ス の 2 パーセ ン ト 未満
です。
•
こ の値が増え続け る 場合、 アプ リ ケーシ ョ ン に問題が発生 し てい ます。 おそ ら く 、 新 し い ク
ラ ス が動的に作成 さ れ続けていて、 使用可能な メ モ リ はすべて埋め尽 く さ れ、 最終的にアプ
リ ケーシ ョ ンの ク ラ ッ シ ュ に至 り ます。
Java Diagnostics Console の使用方法
77
警告
Java Diagnostics では、 特定の イ ベン ト の警告を選択で き ます。 さ ら に、 警告の状態を判別す る た
めに Java Diagnostics が使用す る 感度 も 制御で き ます。
警告に関連す る メ ト リ ッ ク ウ ィ ン ド ウ を開 く には、 [Profile Data] ペ イ ン の警告を ダブル ク リ ッ ク
し ます。
各警告 タ イ プに対 し 、 Java Diagnostics は警告状態が存在す る 間は警告を表示 し 、 警告状態が消失
し た時点で表示を停止 し ます。
Java Diagnostics が リ アル タ イ ム の情報に基づいて警告を再計算す る と き も 、 警告の表示が停止す
る こ と があ り ます。
•
警告を有効にす る には
セ ッ シ ョ ン を オープンす る と き 、 [Session Preferences] ウ ィ ン ド ウ の [Alerts] タ ブで該当す る
ボ ッ ク ス をチ ェ ッ ク し ます。 セ ッ シ ョ ン を オープン し た と き にボ ッ ク ス がチ ェ ッ ク さ れてい
ない場合、 セ ッ シ ョ ン中その警告は使用で き ません。
•
警告を無効にす る には
[Session Preferences] ウ ィ ン ド ウ の [Alerts] タ ブでボ ッ ク ス がチ ェ ッ ク さ れてい る 場合、 [Alert
Controller] ウ ィ ン ド ウ を使用 し て警告を一時的に無効ま たは有効にす る こ と がで き ます。
Alert Controller
セ ッ シ ョ ン中使用で き る 警告をすべて表示 し ます。警告を有効にす る ために [Alert Controller] ウ ィ
ン ド ウ を使用す る 必要はあ り ません。
注記 : [Session Preferences] で特定の警告を無効に し た場合、 こ れ ら の警告の情報は使用で き ませ
ん。 警告を有効にす る には、 新 し いセ ッ シ ョ ン を開始 し 、 セ ッ シ ョ ン が確立 さ れ る 前に [Session
Preferences] で警告を有効にす る 必要があ り ます。
[Alert Controller] を開 く には、 次の ど ち ら かの操作を実行 し ます。
•
[Profile Data] パネルで [Alerts] エ ン ト リ ま たは警告を ダブル ク リ ッ ク し ます。
•
Console ウ ィ ン ド ウ で警告を選択 し 、 [Edit] を ク リ ッ ク し ます。
[Alert Controller] ウ ィ ン ド ウ には、 次の 4 つの使用方法があ り ます。
•
警告の有効化 と 無効化 : 警告を有効ま たは無効にす る には、 警告名の横のチ ェ ッ ク ボ ッ ク ス
を使用 し ます。 警告を無効にす る と 、 Java Diagnostics Console はその警告の報告を停止 し ま
すが、 警告情報の収集は引 き 続 き 行い ます。
•
警告 し き い値の設定 : し き い値を設定 し 、 [Confidence] と [Severity] の値を変更 し て、 警告の
ア ク テ ィ ブ化 / 非ア ク テ ィ ブ化を行い ます。
•
警告 ト リ ガの現在値の表示 : ト リ ガの値を動的に表示 し て、 アプ リ ケーシ ョ ンの潜在的な問
題を追跡 し ます。
— 赤い点 : ト リ ガ さ れた警告
— 青い点 : 現在の し き い値に基づいて警告を ト リ ガ し ない警告デー タ ポ イ ン ト
— 薄いグ レー : 警告 ト リ ガ領域
•
78
過去の警告 ロ グの表示 : [Alert Log] ボ タ ン を ク リ ッ ク す る と 、 現在の Console セ ッ シ ョ ン中
に出 さ れた警告の リ ス ト が表示 さ れ ます。
第5章
各警告 ト リ ガには、 対応す る 信頼度 (Confidence) と 重要度 (Severity) が存在 し 、 こ れ ら の値は Java
Diagnostics がアプ リ ケーシ ョ ン プ ロ フ ァ イ ル デー タ を分析す る と き に変化 し ます。
各警告の信頼度 と 重要度の し き い値を定義 し て、 警告を出す タ イ ミ ン グ を指定で き ます。 検出 さ
れた信頼度 と 重要度が指定 さ れた し き い値を超え、 警告が有効な場合、 Java Diagnostics Console に
警告が表示 さ れ ます。
こ れ ら の両属性は 0 ~ 1 の値を と り 、 値が高いほ ど重要度ま たは信頼度が増 し ます。
•
信頼度 (Confidence) : Java Diagnostics に よ る 状況の診断が ど の程度信頼ま たは確信で き る か を
示す指標
•
重要度 (Severity) : 検出 さ れた状況がアプ リ ケーシ ョ ン の安定性ま たはパフ ォーマ ン ス に与え
る 影響を予測す る 指標
Java Diagnostics は、 警告を出すべ き か ど う か を判断す る と き 、 Java Diagnostics のアルゴ リ ズ ム の
特性に従っ て信頼度 と 重要度の複数のポ イ ン ト ( 点 ) を追跡 し ます。
Java Diagnostics Console の使用方法
79
次の Memory Leak Locations 警告の例にあ る 複数のポ イ ン ト は、 プ ロ グ ラ ム におけ る 複数のポ イ ン
ト で こ の警告の対象 と な る デー タ が生成 さ れてい る こ と を示 し ます。 Y 軸が示す よ う に、 こ れ ら
の警告ポ イ ン ト の重要度は中程度ですが、 Java Diagnostics は、 1 つのポ イ ン ト の有効性に関 し て、
他のポ イ ン ト よ り も 高い信頼度 (X 軸 ) を示 し てい ます。
Expected OutOfMemory Errors 警告
メ モ リ リ ー ク を自動的に検出 し 、ク ラ ッ シ ュ が発生 し ない う ちに警告を出 し ます。Java Diagnostics
は、 右下隅に警告ア イ コ ン と 検出 し た警告の数を表示 し ます。
警告を ダブル ク リ ッ ク す る と 、 [Heap Monitor] デ ィ ス プ レ イ が開 き ます。
警告 ト リ ガの ヒ ュ ー リ ス テ ィ ッ ク アルゴ リ ズ ムは、 サーバー指向アプ リ ケーシ ョ ンに合わせて調
整 さ れ ます。 警告は ヒ ュ ー リ ス テ ィ ッ ク アルゴ リ ズ ム に基づ き 、 100 パーセ ン ト の確実 さ で提供
さ れ る わけではあ り ません。 アプ リ ケーシ ョ ン の ロ ー ド の変動に よ り 、 メ モ リ 使用率が一時的に
増え る こ と も あ り ます。
リ ー ク を確認す る には、 [Garbage Collections] デ ィ ス プ レ イ の表示間隔を 1 時間以上に設定 し て こ
の メ ト リ ッ ク を確認 し ます。
Thread Deadlock 警告
こ の警告は、 複数の ス レ ッ ド が Java ロ ッ ク を取得 し よ う と し てい る も のの、 その Java ロ ッ ク が こ
れ ら の ス レ ッ ド に よ り すでに取得 さ れてい る 可能性があ る こ と を報告 し ます。
こ の警告 を ダ ブル ク リ ッ ク す る と 、 [Thread Histogram] ウ ィ ン ド ウ が開 き ま す。 ど の ス レ ッ ド が
デ ッ ド ロ ッ ク し てい る か を判別す る こ と がで き ます。
デ ッ ド ロ ッ ク し た ス レ ッ ド は、 マルチ ス レ ッ ド プ ロ グ ラ ムのエ ラ ーを表 し ます。
デ ッ ド ロ ッ ク が検出 さ れた アプ リ ケーシ ョ ンは、 ク ラ ッ シ ュ す る と は限 り ませんが、 応答不能に
な り 、 ど の要求に も 応答 し ま せん。 こ の警告は、 アプ リ ケーシ ョ ン が応答を停止 し た理由を示 し
ます。
こ の警告が引 き 続 き 表示 さ れ る 場合は、 アプ リ ケーシ ョ ン の ロ ジ ッ ク に問題があ り 、 開発者に よ
る 対応が必要にな り ます。
80
第5章
Memory Leak Locations 警告
Java コ レ ク シ ョ ン の潜在的な メ モ リ リ ー ク を検出 し 、 リ ー ク が発生 し た ソ ース フ ァ イ ルの行を特
定 し ます。
Java Diagnostics が Java コ レ ク シ ョ ン ク ラ ス の メ モ リ リ ー ク を検出す る と 、Console の メ イ ン ウ ィ
ン ド ウ に Memory Leak Locations 警告が表示 さ れます。
警告を ダブル ク リ ッ ク す る と 、 [Memory Leak Locations] ウ ィ ン ド ウ が表示 さ れ ま す。 こ の ウ ィ ン
ド ウ には、 次の内容が表示 さ れます。
•
検出 さ れた各 Java コ レ ク シ ョ ン の リ ー ク オブジ ェ ク ト の タ イ プ
•
リ ー ク が発生 し た ソ ース フ ァ イ ルの場所
•
リ ー ク の存続時間
•
コ レ ク シ ョ ン オブジ ェ ク ト の現在のサ イ ズ
し ば ら く し て、 次の条件を満たす場合、 警告ア イ コ ンが削除 さ れ る こ と があ り ます。
•
以前報告 し た リ ー ク オブジ ェ ク ト が リ ー ク でない と 判明 し た場合
•
リ ー ク 関連の コ レ ク シ ョ ン オブジ ェ ク ト がガーベジ コ レ ク シ ョ ン に よ り 削除 さ れた場合
すべての リ ー ク ノ ー ド が削除 さ れ、 新 し い メ モ リ リ ー ク が検出 さ れない場合、 警告ア イ コ ンは削
除 さ れます。
Java Diagnostics Console の使用方法
81
Abnormal Thread Termination 警告
キ ャ ッ チ さ れない例外に よ り 異常終了す る ス レ ッ ド を検出 し ます。
異常終了 し た ス レ ッ ド を Java Diagnostics が検出す る と 、 Console の メ イ ン ウ ィ ン ド ウ に Abnormal
Thread Termination 警告が表示 さ れます。
メ イ ン ウ ィ ン ド ウ で こ の警告を ダブル ク リ ッ ク す る と 、 [Uncaught Exception Statistics] ウ ィ ン ド ウ
が表示 さ れ ます。 こ の ウ ィ ン ド ウ には、 次の内容が表示 さ れ ます。
•
スレ ッ ド名
•
例外
•
例外が ス ロ ー さ れた ソ ース の場所
こ の情報を使用 し て例外の原因をデバ ッ グで き ます。
アプ リ ケーシ ョ ン が ス レ ッ ド を異常終了 し た場合、 アプ リ ケーシ ョ ン が示す兆候には次の よ う な
も のがあ り ます。
•
アプ リ ケーシ ョ ン の応答速度が遅い : ワ ーカー ス レ ッ ド が終了す る と 、 アプ リ ケーシ ョ ンの
処理が続行 さ れ る こ と はあ り ますが、 速度が遅 く な り ます。
•
アプ リ ケーシ ョ ン全体が停止す る : 1 つの ス レ ッ ド が異常終了 し て も 、 通常、 アプ リ ケー
シ ョ ン自身は終了 し ません。 ただ し 、 ス レ ッ ド の喪失を処理で き ない場合、 最終的にアプ リ
ケーシ ョ ン全体が終了す る こ と はあ り え ます。
•
[Thread Histogram] ウ ィ ン ド ウ の行は、 ス レ ッ ド を表 し ます。 ス レ ッ ド が終了す る と 、 [Thread
Histogram] デ ィ ス プ レ イ で表示 さ れ る その ス レ ッ ド のバーは他のバー よ り も 短 く な り ます。
なお、 Thread Histogram では、 正常に終了 し た ス レ ッ ド と 異常終了 し た ス レ ッ ド を区別す る
こ と はで き ません。
Abnormal Thread Termination 警告を ダブル ク リ ッ ク す る と 、 [Uncaught Exceptions Statistics] デ ィ ス
プ レ イ が表示 さ れ ます。
Uncaught Exception Statistics
[Uncaught Exception Statistics] デ ィ ス プ レ イ には、 次の内容が表示 さ れます。
82
•
スレ ッ ド名
•
例外の タ イ プ
•
ス ロ ー さ れた時間 ( アプ リ ケーシ ョ ン の起動時か ら 測定 )
•
ス ロ ー さ れたポ イ ン ト ( サブエ ン ト リ と し て表示 )
第5章
ウ ィ ン ド ウ には、 イ ベン ト が階層状の ツ リ ー形式で表示 さ れ ます。
•
[View] → [Show Packages] の順に メ ニ ュ ー項目を選択す る と 、 Java パ ッ ケージ名の表示 / 非表
示を切 り 替え て、 表示 さ れ る 行の長 さ を変更で き ます。
•
[View] → [Show Stacktraces] の順に メ ニ ュ ー項目を選択す る と 、 すべての例外 ノ ー ド の ス
ロ ー さ れた ス タ ッ ク ト レース を展開ま たは縮小す る こ と がで き ます。 特定の ノ ー ド の ス ロ ー
さ れた ス タ ッ ク ト レース のみを展開ま たは縮小す る には、 その ノ ー ド を ク リ ッ ク し ます。
結果は、 セ ッ シ ョ ンの存続時間を通 し て累積 さ れ ます。
Excessive Compilation 警告
メ ソ ッ ド が繰 り 返 し コ ンパ イ ル さ れ る 状態を検出 し ます。
こ の警告を ダブルク リ ッ ク する と 、 過度なメ ソ ッ ド コ ン パイ ルを 示すメ ト リ ッ ク が表示さ れま す。
Java Diagnostics Console の使用方法
83
詳細は、 48 ページの 「過度な メ ソ ッ ド コ ンパ イ ルの特定」 を参照 し て く だ さ い。
84
第5章
6 Java Diagnostics の仕組み
実行中のア プ リ ケーシ ョ ンに対するパフ ォ ーマ ン ス
オーバーヘ ッ ド
Java Diagnostics は、 配布 さ れた アプ リ ケーシ ョ ン に対 し て、 デー タ 収集のオーバーヘ ッ ド が最小
にな る よ う に設計 さ れてい ます。 ユーザーには、 アプ リ ケーシ ョ ン サーバーの起動時間が多少長
く な っ た よ う に感 じ ら れ る だけです。
ア プ リ ケーシ ョ ン サーバーの起動時間
Java Diagnostics では、配布先の環境へのオーバーヘ ッ ド を軽減す る ために、ロ ー ド 時のバ イ ト コ ー
ド イ ン ス ツル メ ン テーシ ョ ン を使用 し ます。
ロ ー ド 時の処理に よ り 、 アプ リ ケーシ ョ ン サーバーの起動時間が数分増え ます。 こ の時間は、 ア
プ リ ケーシ ョ ン サーバーの起動 ス ク リ プ ト の呼び出 し か ら ア プ リ ケーシ ョ ン サーバーが要求受
け入れ可能にな る ま での時間です。
こ のオーバーヘ ッ ド に よ り 、 Java Diagnostics は、 アプ リ ケーシ ョ ン サーバーやユーザー コ ー ド の
前処理を避け る こ と も 可能です。
監視のオーバーヘ ッ ド
Java Diagnostics のデー タ 収集機能は、 稼動中のアプ リ ケーシ ョ ン を配布時にのみ監視す る よ う に
設計 さ れた軽量のデー タ 収集機能です。 通常の J2EE アプ リ ケーシ ョ ンの場合、 セ ッ シ ョ ンがオー
プ ン し ていない と き (Java Diagnostics の JVM エージ ェ ン ト が休止モー ド の と き )、アプ リ ケーシ ョ
ン のオーバーヘ ッ ド は非常に低い状態です。 セ ッ シ ョ ン がオープ ン し 、 デー タ を収集中の と き は
(JVM エージ ェ ン ト がア ク テ ィ ブ モー ド の と き )、 デフ ォ ル ト 設定でのオーバーヘ ッ ド は休止モー
ド よ り は高 く な る も のの、 通常は低い状態です。 セ ッ シ ョ ン を ク ロ ーズす る と 、 オーバーヘ ッ ド
は非常に低い レベルに戻 り ます。
オーバーヘ ッ ド は、 指定 さ れた フ ィ ル タ と フ ラ グに よ り 異な り ます。 オーバーヘ ッ ド を最小にす
る には、nohotspots オプシ ョ ン と noalloc オプシ ョ ン を使用 し て JVM エージ ェ ン ト の存続中の Java
Method Hotspots メ ト リ ッ ク と Object Allocation メ ト リ ッ ク を無効に し ます。
フ ィ ル タ オプシ ョ ン include と exclude を使用す る と 、 オーバーヘ ッ ド が増減 し ます。 include オプ
シ ョ ン を使用す る と 、 監視の詳細レベルは向上 し ますが、 オーバーヘ ッ ド は増加 し ます。 exclude
オプシ ョ ン を使用す る と 、監視の詳細レベルが下が る こ と に よ り オーバーヘ ッ ド が軽減 さ れます。
デ フ ォ ル ト では、 ア プ リ ケーシ ョ ン サーバーの ク ラ ス は イ ン ス ツ ル メ ン ト さ れない ため、 オー
バーヘ ッ ド が軽減 さ れ、 ユーザーの コ ー ド の測定に集中で き ます。
各 JD メ ト リ ッ ク の時間単位の相対的なオーバーヘ ッ ド は次の よ う に異な り ます。
•
コ ス ト の最 も 高い メ ト リ ッ ク ( デフ ォ ル ト ではオ フ )
—
Thrown Exceptions with Stacktraces
85
•
比較的高 コ ス ト の メ ト リ ッ ク
— Java Method Hotspots ( 無効にす る には、 nohotspots フ ラ グ を使用 )
•
低コ ス ト の メ ト リ ッ ク
— Garbage Collections、 Heap Monitor、 Object Allocation Statistics by Class/Method、 Thrown
Exceptions ( ス タ ッ ク ト レース な し )、 Thread Histogram
•
非常に低 コ ス ト の メ ト リ ッ ク
— Memory Leak Locations、 Method Compilation Count、 Loaded Classes
ノ ー ド エージ ェ ン ト のオーバーヘ ッ ド
接続を持た ない ノ ー ド エージ ェ ン ト 、 Console が接続 し ていない ノ ー ド エージ ェ ン ト 、 オープ ン
し てい る セ ッ シ ョ ン数がわずかな ノ ー ド エージ ェ ン ト では、 CPU 使用率は取 る に足 り ません。 こ
れは、 ノ ー ド エージ ェ ン ト の時間の大部分が ソ ケ ッ ト でブ ロ ッ ク さ れ、 FIFO ( 先入れ先出 し ) 方
式の要求を待つ こ と で費や さ れ る ためです。 ノ ー ド エージ ェ ン ト がオープ ン し たセ ッ シ ョ ン を管
理す る と き 、 オーバーヘ ッ ド は極端に低 く な り ます。
ノ ー ド エージ ェ ン ト の物理 メ モ リ の フ ッ ト プ リ ン ト は、 ア イ ド ルの と き 1 MB、 ア ク テ ィ ブの と
き 1.5 MB です。
Console のオーバーヘ ッ ド
シス テム への影響を 最小限にする ために、 管理ノ ード のマシン で Console を 実行し ないでく ださ い。
Console は、 デフ ォ ル ト で 128 MB の メ モ リ を使用 し ます。 長時間の監視セ ッ シ ョ ン では、 256 MB
以上の Java ヒ ープ を使用 し て Console を起動す る 必要があ り ます。
86
第6章
デー タ のサン プ リ ングに関する留意事項
Java Diagnostics は、 アプ リ ケーシ ョ ン のオーバーヘ ッ ド を最小限にす る ために、 実際の件数でな
く 、 サン プ リ ン グ を使用 し ます。 サ ン プ リ ン グで収集 さ れ る デー タ の正確 さ は、 サン プル数に よ
り 向上 し ます。 正確な結果を も た ら すための十分なサ ン プルを収集す る のに必要な時間は、 サ ン
プ リ ン グ頻度に よ り 異な り ます。
Java Diagnostics では、 特定の メ ト リ ッ ク の現在の確度を リ アル タ イ ム で表示す る ために信頼区間
を使用 し ま す。 た と えば、 [Java Method Hotspots] ウ ィ ン ド ウ では、 信頼区間を数値で示すために
測定値の直後に正負符号付 き のパーセ ン ト 値を表示す る と と も に、 視覚的に示すためにグ レーの
ひ し 形を表示 し ます。
グ レーのひ し 形の位置は測定値を表 し 、 ひ し 形の横幅はパーセ ン ト 値の信頼区間を表 し ます。 た
と えば、 95 パーセ ン ト は、 実際の測定値が、 0.95 の確率で、 ひ し 形の範囲内に入 る こ と を意味 し
ます。
実行中のセ ッ シ ョ ン か ら デー タ を収集す る と き 、 信頼区間は時間 と と も に縮小 し ます。
次の例では、 結果の信頼性が高い こ と が、 デ ィ ス プ レ イ の右側にあ る グ レーのひ し 形か ら わか り
ます。
次の例では、 結果の信頼性が低い こ と が、 幅の広いグ レーのひ し 形か ら わか り ます。
Java Diagnostics の仕組み
87
信頼区間表示を無効に し 、 各 メ ソ ッ ド の標準的な ヒ ス ト グ ラ ム を表示す る には、 [View] メ ニ ュ ー
の [Show Confidence Interval] の選択を外 し ます。
88
第6章
メ モ リ リ ー ク検出の し く み
HP Java Diagnostics は、オープン し てい る すべてのセ ッ シ ョ ン を常時監視 し 、ガーベジ コ レ ク シ ョ
ン が終了す る たびに ヒ ープ サ イ ズ を分析 し ます。 Java Diagnostics は、 長時間にわた る ヒ ープ サ イ
ズの増加傾向の検出を試みます。 経過時間 と ヒ ープ サ イ ズの間に依存関係があ り 、 ヒ ープ サ イ ズ
が時間に対す る 特定の一次関数 よ り も 常に大 き い と き 、 Java Diagnostics は潜在的な メ モ リ リ ー ク
率を計算 し ます。
次の図は、ガーベジ コ レ ク シ ョ ン が終了す る たびに ヒ ープ サ イ ズがマー ク さ れ る Java Diagnostics
の標準的な [Garbage Collections] デ ィ ス プ レ イ を示 し ま す。 こ の メ ト リ ッ ク は、 ガーベジ コ レ ク
シ ョ ン後の ヒ ープ サ イ ズが時間の経過 と と も に最小サ イ ズか ら 増加す る 様子を示 し 、 回収不能な
ヒ ープ領域が拡大 し てい る こ と がわか り ます。
次の [Heap Monitor] デ ィ ス プ レ イ が示す よ う に、 オブジ ェ ク ト が残存 し てい る 回収不能な メ モ リ
は、 最終的に ヒ ープの全体的なサ イ ズ を増や し ます。
Java Diagnostics は、ガーベジ コ レ ク シ ョ ン後の ヒ ープ サ イ ズに一次関数的な増加傾向が長時間に
わた り 存在す る 場合、 メ モ リ リ ー ク の可能性を計算 し ます。
ヒ ープ サ イ ズが短時間の間に増加す る のは正常です。 Java Diagnostics は、 1 時間あ た り の MB 数
で こ の割合を測定 し ます。
Java Diagnostics の仕組み
89
Java Diagnostics は、 ヒ ープ サ イ ズの増加が一過性の場合や、 形成 さ れた直線の傾斜が非常に小 さ
く 、 警告を出すほ ど ではない場合、 リ ー ク の報告は行い ません。 と はい う も のの、 正常な状態の
Java アプ リ ケーシ ョ ンが メ モ リ リ ー ク であ る と 診断 さ れ る こ と があ り ます。 ヒ ープ サ イ ズが正常
な範囲に戻 る と 、 こ う し た誤診断は取 り 消 さ れ、 元の状態に戻 り ます。
時間の経過 と と も に リ ー ク 検出は正確にな り ます。 そのため、 メ モ リ リ ー ク 警告の表示 / 非表示
ま たは警告の値に変動が出 る 場合、 最新の警告の状態に基づいて分析を行 う 必要があ り ます。
リ ー ク 率が高い場合、ガーベジ コ レ ク シ ョ ンのパーセ ン ト 値が極端にな っ た時点で IT 管理者に依
頼 し 、 同 じ ク ラ ス タ 環境下にあ る 別の JVM の起動 と 元の JVM の強制終了を適切な方法で実行 し
て も ら う こ と がで き ます。 ど の程度の値を極端 と みなすかは、 ガーベジ コ レ ク シ ョ ンのパーセ ン
ト 値の変動率や、 ヒ ープが不足す る ま での予想時間 ( 分 ) に よ り 異な り ます。
90
第6章
7
ト ラ ブルシ ュ ーテ ィ ング
バージ ョ ン番号の確認
こ の章で記載 し てい る 「OVTAJD」 は、 Java Diagnostics の イ ン ス ト ール デ ィ レ ク ト リ を表 し ます。
Java Diagnostics コ ン ポーネ ン ト のバージ ョ ン番号を確認す る 必要があ る 場合は、 次の コ マ ン ド を
使用 し て く だ さ い。
•
ノ ー ド エージ ェ ン ト
— UNIX
$OVTAJD/bin/nodeagent -version
— Windows
%OVTAJD%\bin\nodeagent.exe -version
フ ァ イ ル名を右 ク リ ッ ク し 、 ポ ッ プア ッ プ メ ニ ュ ーで [ プ ロ パテ ィ ] を選択 し 、 [ バー
ジ ョ ン情報 ] タ ブ を選択す る 方法 も あ り ます。
•
JVM エージ ェ ン ト
— HP-UX、 Solaris、 AIX
what $OVTAJD/bin/lib/libovtajd.[sl|so]
— Linux
ident $OVTAJD/bin/lib/libovtajd.so
— Windows
フ ァ イ ル名を右 ク リ ッ ク し 、 ポ ッ プア ッ プ メ ニ ュ ーで [ プ ロ パテ ィ ] を選択 し 、 [ バー
ジ ョ ン情報 ] タ ブ を選択す る 方法 も あ り ます。
•
Java Diagnostics Console
— HP-UX、 Solaris、 AIX
what %OVTAJD%/bin/lib/OVTAJD_Console.jar
— Linux
ident $OVTAJD/bin/lib/OVTAJD_Console.jar
— Windows
メ ニ ュ ーか ら [Help] → [About] の順に コ マ ン ド を使用 し ます。
91
デバ ッ グ モー ド 、 ログ、 サポー ト
こ の ド キ ュ メ ン ト に説明 さ れてい な い重大な問題が発生 し た場合、 JVM エージ ェ ン ト 、 ノ ー ド
エージ ェ ン ト 、 Console をデバ ッ グ モー ド で実行 し て問題を確認 し 、 Java Diagnostics のサポー ト
ス タ ッ フ に ロ グ フ ァ イ ルを渡 し て く だ さ い。
デバ ッ グ バ イ ナ リ は、 標準のバ イ ナ リ と と も に $OVTAJD/bin にあ り ま す。 ノ ー ド エージ ェ ン ト
と Console のデバ ッ グ バージ ョ ン を呼び出す と き は、コ マ ン ド 行で nodeagent_g と ovtajd_g を指定
し ま す。 JVM エージ ェ ン ト のデバ ッ グ バージ ョ ン を呼び出すには、 コ マ ン ド 行で -Xrunovtajd の
代わ り に -Xrunovtajd_g を指定 し ます。 他の部分は変更す る 必要はあ り ません。
デバ ッ グ モー ド で実行す る と 、各 コ ン ポーネ ン ト の ロ グ フ ァ イ ルが作成 さ れ ます。 こ の ロ グ フ ァ
イ ルは、 サポー ト ス タ ッ フ が分類 と 修復を行 う と き に役立ち ます。
•
Windows では、 JVM エージ ェ ン ト と ノ ー ド エージ ェ ン ト の ロ グ フ ァ イ ルは、 デ ィ レ ク ト リ
C:\Program Files\HPOV_IPA\data\log に書 き 込まれ ます。
•
AIX シ ス テ ム では、 JVM エージ ェ ン ト と ノ ー ド エージ ェ ン ト の ロ グ フ ァ イ ルは、 /usr/lpp/
HPOV_IPA/data/log/ に書 き 込まれ ます。
•
他の UNIX シ ス テ ム では、 JVM エージ ェ ン ト と ノ ー ド エージ ェ ン ト の ロ グ フ ァ イ ルは、
/opt/HPOV_IPA/data/log/ に書 き 込まれます。 ノ ー ド エージ ェ ン ト の ロ グは
ovtajd.nodeagent_pid.log、 JVM エージ ェ ン ト の ロ グは ovtajd.jvmagent_pid.log と い う 名前です。
pid は、 関連す る ノ ー ド エージ ェ ン ト ま たは JVM エージ ェ ン ト のプ ロ セ ス の ID です。
•
Java Diagnostics は、 HP OVTA デ ィ レ ク ト リ への書 き 込みがで き ない場合、 Java Diagnostics の
イ ン ス ト ール デ ィ レ ク ト リ の data/log サブデ ィ レ ク ト リ に ロ グ フ ァ イ ルを書 き 込みます。
Console の ロ グ フ ァ イ ルは、 プ ラ ッ ト フ ォ ームに関係な く 、 Console の現在の作業デ ィ レ ク ト リ に
書 き 込まれ ます。 フ ァ イ ル名は ovtajd_nnnn.log で、 nnnn は既存の ロ グ フ ァ イ ルに使用 さ れていな
い最小の自然数です。 ロ グ出力は、 Console の制御端末に も 書 き 込まれます。
92
第7章
イ ン ス ト ール
ユーザーの ホー ム デ ィ レ ク ト リ に あ る vpd.properties と い う 名前の InstallShield VPD レ ジ ス ト リ
は、 イ ン ス ト ールが失敗 ま たは異常終了す る と 壊れ る こ と があ り ま す。 こ の場合、 2 つの解決方
法が考え ら れます。
•
製品を ア ン イ ン ス ト ール し 、 再 イ ン ス ト ール し ます。 通常、 ア ン イ ン ス ト ールを行 う と 、 壊
れた VPD レ ジ ス ト リ は ク リ ーン ア ッ プ さ れ ます。
•
VPD レ ジ ス ト リ を手作業で削除 し ます。 こ の方法では、 VPD の壊れたエ ン ト リ は必ず削除
さ れ ますが、 ユーザーがシ ス テ ムに イ ン ス ト ール し た他の ソ フ ト ウ ェ アの レ ジ ス ト リ エ ン ト
リ も すべて削除 さ れ ます。
— Java Diagnostics イ ン ス ト ー ラ には、 Java Diagnostics 自身の Java ラ ン タ イ ムは含ま れてい
ません。 イ ン ス ト ール時に、 イ ン ス ト ー ラ は、 Java Diagnostics Console を実行す る のに適
し た Java ラ ン タ イ ム (JRE) の場所を確認 し 、 後述の各ス ク リ プ ト に JRE のパ ス を埋め込
みます。
イ ン ス ト ール後に JRE を移動ま たは削除す る と 、 Java Diagnostics の起動に失敗 し ます。
こ の問題を修正す る には、 次のいずれかの操作を行い ます。
–
Java Diagnostics ス ク リ プ ト で指定 さ れた本来の場所に JRE を再 イ ン ス ト ール し ます。
–
Java Diagnostics ス ク リ プ ト 内の JRE のパ ス を既存の JRE のパ ス に修正 し ます。
JRE のパ ス が書 き 込まれた ス ク リ プ ト は、 JD_JAVA_HOME の bin/ デ ィ レ ク ト リ の中に
あ り ます。 ス ク リ プ ト は次の と お り です。
ト ラ ブルシ ュ ーテ ィ ング
–
ovtajd
–
run_simple_jvmagent
–
setup_jvmagent_environment
93
Console
ノ ー ド エージ ェ ン ト が実行中でない場合、 Console は JVM エージ ェ ン ト に接続で き ず、 管理 ノ ー
ド に接続 し よ う と す る と 、 Java Diagnostics Console の ス テー タ ス バーに次の メ ッ セージが表示 さ
れます。
Connection to hostname failed.
ノ ー ド エージ ェ ン ト は、 自動的に連続稼動 さ せ る ために、 デーモ ン ま たはサービ ス と し て実行す
る よ う に設定で き ます。 連続稼動 さ せ る 必要がない場合は、 通常のプ ロ セ ス と し て実行で き ます。
セ ッ ト ア ッ プ プ ロ セ ス は、 プ ラ ッ ト フ ォ ーム に よ り 異な り ま す。 詳細は、 35 ページの 「 ノ ー ド
エージ ェ ン ト の管理」 を参照 し て く だ さ い。
Java Diagnostics Console グ ラ フ ィ カル ユーザー イ ン タ ーフ ェ イ ス は、 表示のために商用のル ッ ク
ア ン ド フ ィ ールを使用 し てい ます。 こ の場合、 Console を リ モー ト で実行す る と 、 パ フ ォ ーマ ン
ス が低下す る おそれがあ り ます。 Console を リ モー ト で表示す る 場合は、 Java プ ロ グ ラ ミ ン グ言語
の Metal ル ッ ク ア ン ド フ ィ ールを使用 し て く だ さ い。
Console が まれに誤っ た アプ リ ケーシ ョ ン名を報告す る こ と があ り ます。
ど の Java アプ リ ケーシ ョ ンに も 考え ら れ る こ と ですが、 長時間処理が集中す る 監視セ ッ シ ョ ン の
間に Console が メ モ リ 不足にな る 場合があ り ます。 こ の場合、 Console は終了 し ませんが、 デー タ
の報告を停止 し ます。 制御端末には OutOfMemoryError メ ッ セージが表示 さ れ、 Console の動作に
異常を き たす場合があ り ます。
こ の場合は、 -Xmx オプシ ョ ン に よ り 大 き い値を設定 し て、 Console を再起動 し ま す。 -Xmx のデ
フ ォ ル ト 値は 128 MB です。 こ の条件下での JVM エージ ェ ン ト の動作については、 JVM エージ ェ
ン ト の ト ラ ブルシ ュ ーテ ィ ン グに関す る 次のセ ク シ ョ ン を参照 し て く だ さ い。
94
第7章
JVM エージ ェ ン ト
Console が メ モ リ 不足にな る と 、 JVM エージ ェ ン ト は数分後にセ ッ シ ョ ン を ク ロ ーズ し ま す。 次
に、 制御端末の標準エ ラ ーに次の メ ッ セージ を出力 し ます。
Java Diagnostics JVM Agent warning: Session communication channel failure.
Forcing session closure.
Console を新 し く 起動す る と 、 JVM エージ ェ ン ト と のセ ッ シ ョ ンが再度確立 さ れ ます。
HotSpot JVM でオプシ ョ ン のパ ラ レル ガーベジ コ レ ク タ を使用す る 場合、 Garbage Collection メ ト
リ ッ ク は使用で き ません。 パ ラ レ ル ガーベジ コ レ ク タ は、 こ の メ ト リ ッ ク をサポー ト す る のに必
要な情報をすべて提供す る わけではあ り ません。 次の ス イ ッ チを使用 し て、 パ ラ レ ル ガーベジ コ
レ ク タ のいずれか を選択で き ます。
-Xincgc
-XX:+UseParallelGC
-XX:+UseConcMarkSweepGC
-XX:+UseParNewGC
-XX:+AggressiveHeap
アプ リ ケーシ ョ ン を JVM エージ ェ ン ト と と も に実行す る と 、 OutOfMemoryError が表示 さ れ る こ
と があ り ます。 1 つの考え ら れ る 原因は、 Java Diagnostics がエージ ェ ン ト のバ イ ト コ ー ド イ ン ス
ツル メ ン テーシ ョ ン を挿入 し た後で、 ロ ー ド さ れた ク ラ ス デー タ が大 き く な り 、 Java ヒ ープに さ
ら に領域が必要に な る こ と です。 HotSpot の場合、 よ り 多 く の Permanent 領域が使用 さ れ ま す。
HotSpot のデフ ォ ル ト の MaxPermSize は HotSpot のバージ ョ ン で決ま り ますが、 必要な Permanent
領域のサ イ ズが こ の値を超え る と 、 HotSpot は OutOfMemoryError を ス ロ ー し ま す。 HotSpot の非
標 準 オ プ シ ョ ン -XX:MaxPermSize= を 使 用 し て MaxPermSize を よ り 大 き な 値 に 設 定 す る と 、
OutOfMemoryError を避け る こ と がで き ます。
Windows では、 agent.jar のパ ス に空白が含ま れ る と 、 Xbootclasspath を指定す る と き に コ マ ン ド 行
の解析で問題が発生 し ます。 こ の場合、 2 つの解決方法が考え ら れ ます。
•
bootclasspath を二重引用符で囲みます。
-Xbootclasspath/a:"C:\Program Files\HP OpenView\HPOvJD\lib\agent.jar"
•
Windows の短い形式の名前を使用 し ます。
C:\progra~1\hpopen~1\HPOvJD\lib\agent.jar
JVM エージ ェ ン ト の起動時に次のエ ラ ー メ ッ セージが表示 さ れ る こ と があ り ます。
The OVTA Java Diagnostics JVM Agent could not load a class from agent.jar.
Please check your classpath and Xbootclasspath.
The OVTA Java Diagnostics Agent has encountered an error
(log file: ovtajd.jvmagent_28766.log).
Please contact http://support.openview.hp.com for support.
JVM エージ ェ ン ト の起動時に こ のエ ラ ー メ ッ セージが表示 さ れた場合、次の状態の有無をチ ェ ッ
ク し ます。
•
コ マ ン ド 行に -Xbootclasspath オプシ ョ ンが抜けてい る
•
Windows で、 パ ス に空白が含まれ る に も かかわ ら ず、 引用符で囲まれていない
-Xbootclasspath 引数を使用す る 場合、 パ ス の指す内容が正 し い こ と を確認 し て く だ さ い。
ト ラ ブルシ ュ ーテ ィ ング
95
ノ ー ド エージ ェ ン ト
UNIX シ ス テ ム では、時折、 フ ァ イ ル名が *fifo で終わ る フ ァ イ ルを ノ ー ド エージ ェ ン ト が /tmp に
残す場合があ り ます。 こ れ ら の フ ァ イ ルは ノ ー ド エージ ェ ン ト の通信に使用 さ れ る ため、 ノ ー ド
エージ ェ ン ト ま たは JVM エージ ェ ン ト がア ク テ ィ ブな間は削除 し ないで く だ さ い。 こ れ ら の フ ァ
イ ルが蓄積 し 始めた場合、 ノ ー ド エージ ェ ン ト が実行中でない と き に フ ァ イ ルを削除で き ます。
HP-UX では、 ノ ー ド エージ ェ ン ト を同 じ ポー ト 番号で再起動で き ない場合が あ り ま す。 ノ ー ド
エージ ェ ン ト を強制終了 し 、 再起動す る と き 、 次の メ ッ セージが表示 さ れ る こ と があ り ます。
Can't use port 9501. Try using the -port option to select a port from 9502
to 9510.
こ の問題に対処す る には、 別のポー ト を使用 し て ノ ー ド エージ ェ ン ト を再起動 し ます。 まれな こ
と ですが、 前の ノ ー ド エージ ェ ン ト プ ロ セ ス が終了 し た後で も 、 こ のポー ト を使用 し た TCP 接
続が終了 し ない こ と があ り ます。
接続を終了で き ない問題が引 き 続 き 発生す る 場合、 次の コ マ ン ド を root で実行 し て頻度を軽減で
き ます。
ndd -set /dev/tcp tcp_fin_wait_2_timeout 300000
こ の コ マ ン ド に よ り 、 残存す る 接続に対 し て タ イ ム ア ウ ト が ミ リ 秒単位で設定 さ れ ます。 こ の例
は、 こ の タ イ ム ア ウ ト を 5 分 (300000 ミ リ 秒 ) に設定 し ます。 約 5 分後、 前回 と 同 じ ポー ト 番号で
サーバーを再起動で き ます。
96
第7章
用語集
Console
アプ リ ケーシ ョ ン を監視す る メ イ ン ウ ィ ン ド ウ 。
JVM エージ ェ ン ト
各管理 ノ ー ド で実行 さ れ、 プ ロ フ ァ イ ル デー タ を収集 し 、 そのデー タ を ノ ー ド エージ ェ ン ト に
送信す る モジ ュ ール。 受信 し たデー タ を ノ ー ド エージ ェ ン ト が Console に送信 し ます。
Scavenge
領域を解放す る ために行われ る 軽量で差分のみのガーベジ コ レ ク シ ョ ン。
ア ク テ ィ ブ モー ド
オープン し てい る Console セ ッ シ ョ ンに含まれ、 JVM と アプ リ ケーシ ョ ン か ら デー タ を収集 し 、
Console にそのデー タ を送信す る Java Diagnostics の JVM エージ ェ ン ト 。
エージ ェ ン ト
使用中の環境で Java Diagnostics と し て機能す る モジ ュ ール。 Java Diagnostics には、 ノ ー ド エー
ジ ェ ン ト と JVM エージ ェ ン ト の 2 種類のエージ ェ ン ト があ り ます。
ガーベジ コ レ ク シ ョ ン
プ ロ グ ラ ムが参照 し な く な っ たオブジ ェ ク ト を自動的に解放す る プ ロ セ ス。
管理 ノ ー ド
Java Diagnostics の ノ ー ド エージ ェ ン ト と JVM エージ ェ ン ト が イ ン ス ト ール さ れてい る コ ン
ピ ュータ。
キ ャ ッ シ ュ さ れたセ ッ シ ョ ン
実行中の JVM が自動的に終了す る か、 ユーザーがア ク テ ィ ブなセ ッ シ ョ ン を ク ロ ーズ し た時点
で作成 さ れ る セ ッ シ ョ ン。 キ ャ ッ シ ュ さ れたセ ッ シ ョ ン のデー タ は分析に使用す る こ と はで き ま
すが、 実行中の JVM には接続 し ていないため、 デー タ を さ ら に収集す る こ と はで き ません。
休止モー ド
イ ン ス ト ール と 設定が行われてい る も のの、 オープ ン し てい る Console セ ッ シ ョ ン に含ま れない
ため JVM と アプ リ ケーシ ョ ンか ら デー タ を収集せず、 Console にデー タ を送信 し ない Java
Diagnostics の JVM エージ ェ ン ト 。
コ ン ト ロール パネル
Java Diagnostics を制御す る ボ タ ンが表示 さ れてい る メ イ ン ウ ィ ン ド ウ 。
97
サービ ス レ ベル目標 (SLO)
リ ソ ース のパフ ォーマ ン ス が基準を満たすか ど う か を判別す る ために使用す る 測定可能な基準。
た と えば、 「特定の Web サ イ ト やアプ リ ケーシ ョ ン な ど の リ ソ ース が毎月 99.9% 使用で き る こ
と 」 と SLO で定め る こ と がで き ます。
重要度
検出 さ れた状況がアプ リ ケーシ ョ ン の安定性に与え る 影響を予測す る 指標。
信頼区間
表示 さ れた値が正 し い確率を示す Java Diagnostics の視覚的な表現。 使用 さ れ る サン プルの数が増
え る に し たが っ て、 確率は高 く な り ます。
信頼度
Java Diagnostics に よ る 状況の診断が ど の程度信頼ま たは確信で き る か を示す指標。
セッショ ン
Java Diagnostics Console と 、 管理 ノ ー ド で実行中の JVM エージ ェ ン ト と の間でオープン し てい る
稼動中の接続。 オープン し てい る セ ッ シ ョ ン には、 セ ッ シ ョ ン を オープ ンす る と き に設定 し た メ
ト リ ッ ク 、 フ ィ ル タ 、 警告が関連付け ら れてい ます。
タ イ ムス ラ イ ス
アプ リ ケーシ ョ ン の現在の監視セ ッ シ ョ ン の存続時間を表 し た も の。 タ イ ム ス ラ イ ス の存続時間
全体のデー タ を表示で き ます。
ノ ー ド エージ ェ ン ト
JVM エージ ェ ン ト と Console 間の通信を管理す る プ ロ セ ス。
バイ ト コ ー ド イ ン ス ツル メ ン テーシ ョ ン (BCI)
Java バ イ ト コ ー ド の イ ン ス ツル メ ン テーシ ョ ンは、 アプ リ ケーシ ョ ンの Java ク ラ ス の指定 さ れ
た場所に特別な短いバ イ ト コ ー ド のシーケ ン ス を挿入 し て、 それ ら の ク ラ ス を監視す る 際の実行
時分析を容易に し ます。
パ ッ ケージ
複数の タ イ プ を ま と めた グループ。 パ ッ ケージは package キー ワ ー ド で宣言 し ます。
バ ッ チ モー ド
イ ン ス ト ール と 設定が行われ、 デー タ を収集 し てい る も のの、 Console には接続せず、 セ ッ シ ョ
ンに含まれない Java Diagnostics の JVM エージ ェ ン ト 。 収集 さ れたデー タ は管理 ノ ー ド の フ ァ イ
ルに格納 さ れ、 Console を使用 し て後で開 く こ と がで き ます。
フ ィ ルタ
特定の ク ラ ス を測定の対象か ら 外す こ と 。 Java Diagnostics には、 情報の収集 と 表示を制御す る た
めに、 JVM エージ ェ ン ト フ ィ ル タ と Console フ ィ ル タ の 2 つの方法が用意 さ れてい ます。
ホ ッ ト スポ ッ ト
高い CPU 使用率を示すプ ロ グ ラ ムの範囲。 通常は メ ソ ッ ド です。
98
第 章
ホ ッ ト スポ ッ ト
実行レベル ま たはア ク セ ス レベルが通常 よ り 高い コ ー ド の部分。
メソッド
ク ラ ス に定義 さ れてい る 機能。 特に指定 さ れていない場合、 メ ソ ッ ド は静的ではあ り ません。
99
100
第 章
Fly UP