BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース IBMおよびSAPがJVM診断ツールをオープンソース化

IBMおよびSAPがJVM診断ツールをオープンソース化

IBMは先日、Java診断ツールスイートを発表した。これにはDump Analyzer For Java、Garbage Collection(GC:ガベージコレクション)用のExtensible Verbose Toolkit(EVTK)、およびJava Lock Analyzer(JLA)ツールなどの製品が含まれる。IBMのalphaWorks(source)チームがこれらのJVMツールについて研究し、「Java diagnostics, IBM style(サイト・英語)(Java の診断をIBM スタイルで)」と呼ばれる技術記事シリーズの中でその使い方を詳しく掲載した。また、SAPは先月、SAP Memory Analyzerと呼ばれるヒープアナライザツールや、同ツールのEclipse IDEとの統合について発表した(サイト・英語)

JVMパフォーマンスの監視および診断統計データを解析したり解釈したりする、またはそうせざるを得ない(時にして起こる状況である)Java開発者にとって、解析プロセスをダウンロード、インストール、および開始するためのインテリジェントなオープンソースツールはあまり多くない。テキスト形式のログファイルの内容に目を通すだけでJVMログを解析するとストレスがたまる場合がある。これは、Javaアプリケーションにおいてログを解析し、問題箇所をすばやく見つけることが不可欠な本番環境において、チームがJVM関連の火の粉をはらうよう求められるとき、特に大変なタスクとなり得る。これは、ビジュアルツールの助けがない状態でのデータの解釈、解析がより複雑なスレッドダンプログの場合にいっそう顕著である。

Java Dump Analyzer(サイト・英語)およびGarbage Collection Analysis Toolkit(サイト・英語)は、IBM JVMと連携して働き、IBMソフトウェア製品のダウンロードや連動動作に使用できる無償のソフトウェアワークベンチであるIBM Support Assistant(ISA)を用いてダウンロードできる。

Dump Analyzer

このツールは、生成かつフォーマット済みのシステムダンプファイルに関する基本的な解析を行う。Dump AnalyzerはISAプログラム内部またはコマンドラインから起動できる。これは、IBMのDiagnostic Tooling Framework for Java(DTFJ)、つまりJava診断ツールを構築する土台をなすAPIに基づく。DTFJ APIを使用すると、問題を解析するとともに、解析出力を用いてレポート情報を作成することができる。

Dump Analyzerを使用する解析プロセスは、ユーザーが選択したデータに基づくDTFJイメージの作成から始まる。このイメージは、ランタイムパラメータ、Javaスレッド、およびヒープ内オブジェクトの詳細を備えた完全なオペレーティングシステムイメージである。次に、ユーザーが選択したモジュールに基づいてこのイメージの解析を行う。選択されたすべてのモジュールの解析が終了すると、Dump Analyzerは解析結果からレポートを生成する(HTMLまたはASCII形式)。

 Dump Analyzerツールは、Java開発者がDump Analyzer APIを拡張することによってカスタム解析モジュール(サイト・英語)を記述することができるという点で、拡張性も実現している。

Garbage Collection Analysis Toolkit

このGCツールキットを使用すると、冗長なGCログを診断したり、メモリ関連のJVMパフォーマンス問題を解析したりできる。JVM内のGCプロセスを正しく構成しないと、より多くのリソースが消費され、最終的には速度の低下や、Javaアプリケーションのクラッシュまで起こり得る。GCツールキットは、IBM JREのバージョン1.4.2以上からのログを処理できる。また、WebSphere Real Timeサーバ(サイト・英語)から生成したGCログの解析にも使用できる。

GCツールキットは、単独のGCログファイルを解析したり、複数のファイルを並べて比較したりでき、後者はコード変更前後のGC傾向を比較してJVM内のメモリリークまたはパフォーマンス問題に対処するときに有効である。開発者はデータをフィルタリングしてGCログの特定の内容に焦点を当てることもできる。このツールキットは、Java開発者が後の使用のためにカスタム設定を保存できるようにするテンプレートも提供している。

GCツールキットに関するIBM developerWorksの投稿(source)では、ツールのインストールと起動、および解析用ファイルを開いたり複数のファイルを同時に比較したりする方法が説明されている。この投稿は、メモリリークの診断、JVMメモリヒープのサイジング、およびGCログに基づくJavaアプリケーションのスループット評価という3つのケーススタディを扱う。

Lock Analyzer

IBM alphaWorksのプロジェクトであるLock Analyzer for Java(サイト・英語)は、Javaライブアプリケーション上でリアルタイムかつ動的なロック監視を実現する。これは、IBM JVM(バージョン5.0以上)上で動作し、Javaアプリケーション上でロック解析を行い、スレッドのアクティビティ、スレッドのロックコンテンション、および同期問題についての詳細を提供する。

Lock Analyzerアーキテクチャは、JLAagentおよびJLAGuiと呼ばれる2つのコンポーネントで構成される。このエージェントは、Java仮想マシンへの接続を提供し、動作しているアプリケーション上のロック情報を収集する。SwingベースのアプリケーションであるGUIコンポーネントは、ロック解析統計データのグラフィカルビューを提供する。サーバーとGUIクライアント間の通信がローカルでも2台のリモートマシン間でも可能となるよう、JLAGuiはMBeans APIを使用してJLAagentに接続される。

SAPツールからのMemory Analyzer(サイト・英語)ツールを使用すると、JVMメモリ内すべてのオブジェクトのスナップショットを含むヒープダンプが、その生成時点で閲覧できる。このツールは、Sun、HP、およびSAPからの各種JVM(JDKバージョン1.4.2、Java SE 5および6)をサポートする。これは、Eclipse Rich Client Platform(RCP)ベースのスタンドアロン製品として、また、ツールが直接Eclipse IDE内部から起動できるようEclipseプラグインとしても利用可能である。

Memory Analyzerは、メモリ内にあるすべてのオブジェクトの一覧を、これらのオブジェクトが保持するオブジェクトカウントおよびメモリヒープ(バイト単位)とともに表示する「Class Histogram Grouping」を通じて、ヒープ情報のさまざまなビューを提供する。「Dominator Tree」ビューは、ガベージコレクトされると解放可能な最大のヒープを保持する別個のオブジェクト(単独のオブジェクトまたは同クラスのオブジェクトグループ)を確認するために使用できる。その他のビューとして、「Leak Suspects」はメモリリークの疑いがあるとみなされたオブジェクトを示し、「Paths from GC roots」ビューはGCプロセス内でメモリリークを起こす可能性があるオブジェクトやそのルートにガベージコレクション詳細を提供する。これらのビューはすべて、アプリケーション内のオブジェクトがGCプロセスによってクリーンアップされていない場合の便利な視覚的手掛かりとなる。

IBMやSAP以外にも、JVMサーバーログの解析、解釈に役立つ無償のJVMログビューアが存在する。以下に、サポートする解析の種類別に分類したこれらのツールの一覧を示す。

スレッドダンプ解析

このカテゴリでは、IBM Thread and Monitor Dump Analyzer、Thread Dump Analyzer(TDA)、および Locknessが人気のあるスレッドログアナライザである。

IBM Thread Dump Analyzer(サイト・英語)はIBMがサポートするJVMと連携して働く。筆者はSun JVMを使用してJavaアプリケーション内で生成したスレッドダンプを開こうとしたが、ツールはスレッドダンプログフォーマットを認識しなかった。TDA(サイト・英語)はスレッドダンプログのオフライン解析に使用可能なユーティリティプログラムである。Locknessアナライザ(サイト・英語)はIDE内部から起動できるようになっているEclipseプラグインである。

ヒープスナップショット解析

IBM Heap Analyzer(サイト・英語)を使用すると、Java開発者はヒープログに保存したJVMメモリ情報を閲覧することができる。このツールはSun JDKと連携して働くが、ヒープの詳細を示す上でSAP Memory Analyzerほど直観的でない。

HAT(サイト・英語)はjava.netプロジェクトであり、さまざまなメモリ使用の詳細ビューを表示する一連のWebページの形でヒープ情報を閲覧するのに使用できる。いくつかのヒープ情報のビューが利用可能であるが、異なるビュー間でヒープ詳細をトレースするのは容易でない。

HpjTune(サイト・英語)およびHpjMeter(サイト・英語)は、HPが提供するヒープ解析ツールである。筆者がSun JVM(バージョン1.4.2)を使用してJavaアプリケーション内で生成したヒープログを開こうとすると、HpjTuneはログファイルを認識しなかった。

GCログ解析

このカテゴリにおいて、GCViewerは生成済みのGCログファイルを閲覧する優れたツールである。GCViewer(サイト・英語)は、一般的に普及しているほとんどのJVM(Sun、IBM、HP-UX、BEA JRockit)をサポートしている。これは、コマンドラインからインストールしたり、実行したりするのに非常に簡単、明瞭である。GCViewerは若い/古い世代およびFull/PartialGC時代についてのガベージコレクション情報のビジュアルグラフを表示する。GCViewer(サイト・英語)ツールに関するJava Performance Tuning(サイト・英語)Webサイト上のレビューにおいて、GCViewerを使用して解析されたGCログに基づいて典型的なJavaアプリケーションを調整する方法が掲載されている。

JDKの後のバージョン(Java SE 5以降)は、細かい設定を行うことなしに優れたJVM監視/管理機能を実現する。以前のバージョン(JDK 1.4以前)を使用しているJava開発者にとっても、この記事で扱うツールはJVMログを解析する上で便利である。これらのツールの機能はそれぞれ異なるため、開発者はJVMパフォーマンス監視および障害診断の取り組みにおいてどれを使用するか決定する前に、ツールの評価を行うべきである。

原文はこちらです:http://www.infoq.com/news/2007/11/ibm-sap

この記事に星をつける

おすすめ度
スタイル

BT