Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

Java解析ツールバトルにENdoSnipeで参戦してきました!

f:id:acro-engineer:20130911125211p:plain:w320
9/10(火)のJJUGナイトセミナーにて「Java解析ツールバトル」を開催しました、
発表者の @です。

私たちの開発しているOSSの解析・診断ツール「ENdoSnipe」と、同じくOSSの解析ツールである「HeapStats」
さらにOracle公式ツールである「Java Flight Recorder」の三つ巴でパネルディスカッションを繰り広げてきました。

100名近い参加者が集まる中、各ツールの良い所も悪い所もお互いによく話し、
またロードマップや、オフレコ(オフ音声!)の話題もあり面白い会にできたと思います。
f:id:acro-engineer:20130910210807j:plain:w480
ちなみに同日に、
ENdoSnipe 5.1β
・HeapStats 1.1
Java SE7 Update40(初のJava Flight Recorder正式リリース)
がリリースされるというイベントドリブンぶり(笑

# まぁ7u40は偶然ですけど。

いずれにせよ、参加者の皆さんにとって、楽しい・有用なイベントになっていれば嬉しい限りです。


ところで、私自身の発表について言えば、開幕の自己紹介が終わった後にMacがフリーズし、
リブートすると、構築していたデモ環境が一部壊れていてかなり冷や汗をかきながら環境を再構築していました。

ホントもうダメかと思いました、っていうか結構ダメでした。
いくつかのデモが動かなかったし(><)

そんなわけで、会の中では紹介しきれなかった話を少しここで書きたいと思います。

ENdoSnipeの強みは診断

ENdoSnipeの最大の売りは「診断」です。

会の中では、SQLの実行計画を自動的に取得・診断をする機能をデモしましたが、
他にも、メモリリーク検出、デッドロック検出、過剰なI/O、不要なコンテナ初期化など、
多くの典型的な問題を動的に「診断」して問題を検出します。

検出ルールの一覧
http://www.endosnipe.com/functions/performancedoctor.html


たとえばメモリリーク検出機能では、

f:id:acro-engineer:20130911124349p:plain:w320
メモリリークを検出すると同時に、Collectionに要素追加をしたスレッドのスタックトレースを取得しており、
このようにダッシュボード後から確認することができます。

f:id:acro-engineer:20130911124343p:plain:w320
あわせて、グラフでCollectionが持つ要素数が徐々に増加傾向にあることを確認することもできます。

これらの情報があれば、スタックトレースから問題を起こしている箇所を特定することができます。
ENdoSnipeは、このように問題を診断した際にあわせて関連情報も取得するため、障害解析を効率的に行なうことができます。

導入手順やトラブルシュートの方法など

ENdoSnipeの導入手順や、実際のトラブルシュートの流れは、gihyo.jpにて連載している
「halookで始めるHadoop/HBaseトラブルシューティング」の第7回~第9回が詳しいです。
って私が書いた記事なんですけどね (^^;

第7回 halookを支える技術「ENdoSnipe」
第8回 ENdoSnipeのセットアップ
第9回 ENdoSnipeを使ったトラブルシューティング

セットアップは、ひと手間かかるものの、決して難しくはないため、上の記事を見ながら使ってもらえればと思います。

ENdoSnipeの今後

今後の方針は、大きく分けて3つあります。

1. APMとしての機能強化

ENdoSnipeは、元々Javaの「可視化ツール」として開発し、そこから「診断ツール」として使えるように変化してきました。

ここから先は、解析ツールの領域に留まらず、「アプリケーション性能管理(APM)」としての機能を強化する予定です。
このクラウド時代に、数百台のサーバに導入する費用を考えた場合に、有償のAPMツールなどと並べて、
OSSであるENdoSnipeを評価してもらえることを狙っています。

2. 導入の容易性向上

もともとENdoSnipeは、商用プロダクトという位置づけから、もっと多くのユーザに使ってもらいたい、
さらには海外でも使ってもらいたいという理由でOSS化しました。
同じく使ってもらいやすさという観点で、セットアップの容易性もさらに向上させる予定です。

3. Java以外の監視

ENdoSnipeの多くの機能は、JavaVMから取得できる情報を収集したり、
Javaのクラスファイルを書き換えて情報を収集することで、実現しています。

この「Java」という枠組みから一歩踏み出して、Linuxの情報収集ツールであるSystemTapと連携することで、
PostgreSQLMySQLPHPPython、それにRubyなど、Javaを利用していないミドルウェアや言語でも
利用できる機能を強化したいと考えています。

次回に向けて

主催者の立場としては、あまり知られていないツールの話題なので、参加者が集まるかどうか不安でした。

しかしながら、募集を開始してみれば、24時間で定員の120人が満席になり
その後もキャンセル待ちが延々と続くなど、予想以上の大盛況でした。

一方で、集客を見誤ったがゆえに参加したかったけどできなかった方がたくさん出てしまい、
申し訳なく、ぜひ再演したいと検討しています。


もし続編を実現できれば、今回できなかったデモも含めて「倍返し」で臨みたいと思います。

ぜひご期待ください!