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 第 章