検索
連載

DTraceでトラブルシューティングOpenSolarisで始めるブログサーバ構築(最終回)(2/4 ページ)

この連載では、サーバOSとして十数年発展してきた「Solaris」をオープンソース化した「OpenSolaris」を紹介し、ブログサーバ「Roller」と組み合わせて運用していくうえで有用なさまざまな知識を紹介していきます。(編集部)

PC用表示 関連情報
Share
Tweet
LINE
Hatena

Javaアプリケーションを詳細にトレース

 さらに詳しくJavaアプリケーションをトレースするために、DTrace用のhotspotプロバイダが提供されています。hotspotプロバイダは、JDK 1.6で提供されている機能で、JavaとVMのイベントトレースを可能にします。hotspotプロバイダの詳細については、http://java.sun.com/javase/6/docs/technotes/guides/vm/dtrace.htmlをご覧ください。

 Javaアプリケーションの中で頻繁に呼び出されるメソッドを計測する「method_* プローブ」は、実行中のVMの性能に影響を与えるため、デフォルトでは有効状態ではありません。有効にするには、VMにExtendedDTraceProbesフラグを立てる必要があります。通常、Java実行時には、引数「-XX:+ExtendedDTraceProbes」の追加で有効になります。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 Apache Rollerでこのオプションを有効にするには、/opt/coolstack/tomcat/binディレクトリの下に「setenv.sh」という名前で、下記の内容の実行可能シェルスクリプトを作成し、Rollerを再起動する必要があります。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 以下の例では、Roller実行中に呼び出されたメソッドのクラス名とメソッド名をトレースします。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 hotspot$targetの記述で、dtrace(1M)の引数に計測するRollerのプロセスIDを指定します。RollerのプロセスIDは、以下の方法で取得可能です。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 では、大域ゾーンにて、jmethod_trace.dを使ってトレースを実行してみます。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

統計情報でシステム全体の状態を把握

 実際にRollerを運用しているケースでは、1日に何百、何千と頻繁にアクセスがある場合もあります。こうしたケースでは、イベントごとの詳細トレースよりも、一定時間内にアクセスした総カウント数や書き込みアクセスにかかる平均時間などの統計情報の方が、状態を観測するうえで有効となる場合があります。

 以下に簡単な例を示します。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 続いて、quantize()関数を使って、write()システムコールにかかった時間の統計情報をグラフで表示してみます。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 OpenSolarisでは、DTraceの統計関数の出力結果をグラフィカルに出力させる「Chime(チャイム)」というツールがプロジェクトから提供されています。このツールをダウンロードし、使用した例を以下に示します。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

OpenSolaris
画面1 Chimeを使用し、DTraceの結果をグラフで表示した例

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る