図3●監視用のバイト・コードでオーバーヘッドを抑制
米Wily TechnologyのWily 4は,ユーザーのプログラムに監視用バイト・コードを付け,エージェントで情報を収集。管理サーバー(Enterprise Manager)経由で監視端末にモニタリング結果を表示する

監視用バイト・コードで負荷を軽減

 一方のシステム解析ツールは,Javaで構築したシステム全体をモニタリングし,ボトルネックを切り分けることに主眼を置いている。当然,出番は結合テスト以降である。

 このツールは負荷テストや本番運用時にも利用するため,プログラム解析ツールよりもモニタリングの負荷を減らす必要がある。Wily 4やPerformaSureなどは,プログラムに監視用のバイト・コードを付加することでオーバーヘッドを抑えている(図3[拡大表示])。

 監視用のバイト・コードは,クラス・ファイルをJavaVM上にロードする際に付加。ユーザーのプログラムには影響を与えない。エージェントが監視用バイト・コードからクラスの実行時間や回数をモニタリングし,サーバーに情報を蓄積する。

図4●トランザクションをトレースする
米Quest SoftwareのPerformaSureは,エージェントから収集した情報を基に,実行されたトランザクションを再現する機能を備える。分散環境にも対応している。トランザクションの実行時間の内訳を解析することで,Javaで構築したシステムのボトルネックが検出できる

トランザクションの中身を探る

 システム解析は,トランザクションをキーに性能のボトルネックを切り分ける。PerformaSureは,各種エージェントからパフォーマンス情報を収集し,トランザクションの実行パスを再現(図4[拡大表示])。この解析により,プログラムがボトルネックと分かれば,先のプログラム解析ツールを使ってソース・コードを調べる,という手順でチューニングを進める。Wily 4も,「Transaction Tracerで,Webコンテナに入ってから出るまでの“トランザクション”の内訳が解析できる」(アイ・ティ・フロンティア サービス事業統括本部 サービスデリバリー本部 第四アウトソーシング部 課長 飯作宣朗氏)*5

 米Mercury InteractiveのTopazもトランザクションの性能分析が可能だが,モニタリングの方法は他のツールと異なる。Topazは,仮想ユーザーがプログラムにアクセスし,そのトランザクションを解析する。ユーザーの体感をベースにしている*6。J2EEブレークダウン機能を使えば,コンポーネント・レベルで内訳が把握できる*7

 プログラムとシステム,両方にまたがって解析が可能な製品もある。Precise/Indepth for J2EEは,クラスやメソッドだけでなく,SQL文の実行時間も計測。これにより,APサーバーとデータベース,どちらの問題かを切り分ける*8。プログラム解析では,性能の悪いクラスの特定,改善を支援するアドバイス機能も備えている。

(森山 徹=tmoriyam@nikkeibp.co.jp)