So-net無料ブログ作成

Glassbox Inspector の評価 [Java]

○はじめに

  • 現在評価中。まずは実際に動作させてみた所感を。

    Web プロジェクトを担当することにより、性能改善に関しては何度も苦労させられました。プロファイラも高価であり、評価したい観点を評価できないケースが利用できなかったころ、私は、複数のプロジェクトで汎用的に利用可能なツールにより性能を分析することができないかと試行錯誤しました。

    初期の段階は、各処理で現在時刻を出力することにより、処理間の処理時間を把握し、ボトルネックがどこにあるのかを確認していました。(処理時間の正確なベンチマークをおこなうことが目的ではないため、これで十分でした。)しかしながら、現在時刻を出力するコードを追加し、本番時には削除することは、開発者の作業量の増加に繋がるという課題も残っていました。(log4j などのログレベルでの制御も可能ですが、評価するアプリケーションの制御、評価する処理の制御などの観点により細かい制御は難解でありました。)

    よって、次の段階では、AOP を用い、ログ出力のコードを開発者の手を煩わせることなく、動的に追加することを模索しました。この段階で、開発者に対する負荷をかけずに、ログ評価アプリケーション・箇所の制御をより容易におこなうことを実現させることができました。

    これで、複数のプロジェクトで利用できる汎用的な性能分析ツールの実現には成功したわけですが、将来的には、性能ログだけでなく、コネクションプールの利用状況などシステム全体の状況を把握し、問題の検知、警告、改善を促すことを一元管理することはできないかと考えておりました。 全てのセンサーを MBean で実現し、JMX 経由で管理すればできるなとは思っていました・・・

    ・・・が、そこまでは実現できておりませんでした。そんな中で、Glassbox Inspector という当職が考えていたことを、より実用的に実現されていたツールを見つけ、感激していたのですが、なかなか時間を割くことができず、評価はできておりませんでした。

    前置きが長くなりましたが、今回はこのツールを実際に利用してみて評価したいと思います。

    このツールに関する記事は、IBM developerworks の  AOP@Work: Performance monitoring with AspectJ, Part 1, 2 の記事として公開されています。 よく纏まった記事だと思いますので、ご覧になってみてください。
     http://www.ibm.com/developerworks/java/library/j-aopwork10/index.html
     http://www.ibm.com/developerworks/java/library/j-aopwork12/index.html

○スクリーンショット

○評価結果

  • まずは実際に動作させてみた状況で詳細は調査中ですが、所感としては、期待通りのツールで満足しています。
  • developerWorks の記事では、発行したSQL文を把握することが可能であるようですが、実際に検証した結果、取得できていないケースもあるようです。(理由は不明、調査中)
  • Web システムの性能となると、Java プログラムの処理時間も評価ポイントとなりますが、DB に対して、どのような SQL を発行し、どのようなアクセスパスで実行されたかも評価ポイントとなります。DB に対する情報ももう少し取得することができないか検討してみたいと思います。

○動作検証環境およびライブラリ

  • Spring のサンプルアプリケーションである jpetstore で検証をおこないました。 DB は、サンプルアプリケーションのディフォルトの設定を利用することにしました。具体的には、hsqldb を利用します。 動作検証環境およびライブラリの詳細は以下のとおりとなります。

    Windows XP, JDK 1.5.0_03, Tomcat 5.5.7, Glassbox Inspector 1.0 beta2, hsqldb Spring 1.2.5(Glassbox Inspector同梱), Spring サンプルアプリケーション(jpetstore)

○設定手順

  • ここでは最低限の設定内容しか述べていません。詳細な情報に関しては、各アプリケーションのドキュメントをご覧ください。

○Glassbox Inspector 関連の設定

  1. AspectJ の Load-time weaving を有効するために、AspectJWeaver をtomcat の起動オプションに追加する。
    1.1.スタートメニューから、「Configure Tomcat」を選択し、tomcat のプロパティを編集するGUIを起動する。
    1.2.「Java」タブの「Java Options」に以下の行を追加する。
       -javaagent:C:\Program Files\Apache Software Foundation\Tomcat 5.5\shared\lib\aspectjweaver.jar
    ※Glassbox Inspector のWebページでは、バッチファイルに記述する手順を述べている。
  2. aspectjweaver.jar を クラスパスで参照できる場所にコピー
    %TOMCAT_DIR%/shared/lib にコピーする
  3. GlassboxInspector ライブラリをクラスパスで参照できる場所にコピー
    %WEBAPP_DIR%/WEB-INF/lib にコピーする。
      使用するライブラリは以下のとおりである。
      glassboxInspector.jar, commons-collections-3.1.jar, emory-util-1.4.jar, log4j-1.2.9.jar, spring-1.2.5.jar
    ※クラスローダ上で log4j.jar が競合し、動作しなかったため、現時点では、GlassboxInspector のライブラリは各アプリケーションの WEB-INF/lib ディレクトリに格納している。GlassboxInspectorのホームページで述べられた設定内容とは異なる。
  4. サンプルアプリケーションの log4j の設定に Glassbox Inspector の設定を加える。
    log4j.category.glassbox=INFO

○hsqldb の起動

  1. hsqldb の起動
    必要な設定はおこなわれているので、DBサーバを起動する。
      %SPRING_SAMPLES_DIR%/jpetstore/db/hsqldb の server.bat を実行する。

○tomcat の起動

  1.  スタートメニューから、「Configure Tomcat」を選択し、tomcat のプロパティを編集するGUIを起動する。
  2. 「General」タブの「Start」を選択し、tomcat を起動させる。
  3. %TOMCAT_DIR%/logs/stdout_date.log を確認し、正常に tomcat が起動していることを確認する。

○ブラウザでの動作検証

  1. jpetstore の Webページにアクセスし、正常に表示されることを確認する。
     URLは以下のとおりである。
      http://127.0.0.1:8080/jpetstore/

○Glassbox Inspector の動作検証

  1. 以下のコマンドで jconsole を起動し、Glassbox Inspector が提供する MBean の情報を確認する。
    jconsole service:jmx:rmi:///jndi/rmi://localhost:7132/GlassboxInspector

nice!(0)  コメント(0)  トラックバック(214) 

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 214

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。