torutkのブログ読者になるtorutkのブログソフトウェア・エンジニアのブログ2013-09-10JJUGナイトセミナー「Java解析ツールバトル」Java今日は、JJUG主催のナイトセミナー「Java解析ツールバトル」が19:00〜21:00の時間帯で開催されました。本日バトルに参加したツールとパネリストは次の3つです。Recorder(杉氏)今日は、パネルディスカッション形式でコーディネータが山本裕介氏です。Controlからなる解析ツールが、OracleのHotSpotVMに統合されつつあるものです。7u40にも一部機能が搭載されるようです。Recorderが実行中の情報(JVM、OS、アプリケーション)を取得します。Controlツールで表示・解析します。ControlはEclipseベースアプリケーションとのことです。デモを見ると、JVisualVMで取得できる各種情報(スレッド情報、メモリ情報、クラスヒストグラム情報)や、I/O情報(ソケット通信)などが採取できるようです。情報の表示時に閾値を超えたものだけ表示するといった仕掛けがあります。オーバーヘッドは少なく、標準で3%程度のオーバーヘッド、詳細項目を採取したときに5〜10%というところだそうです。Recorderが含まれていることになります。Recorderは有償の機能で、商用利用するにはライセンスが必要となるそうです。開発用途で個人なら無償との話もあったのですが、細部は確認が必要かも。-XX:+FlightRecorderというオプションを指定します。Recorderのライセンスについて(2014-06-25追記)次のURLにライセンスについてメモを記載しました。http://torutk.com/projects/swe/wiki/Java_Flight_Recorder#%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6HeapStatshttp://icedtea.classpath.org/wiki/HeapStats/jpメモリリークとデッドロック検出に注力した解析ツールです。実行中に亜タッチしアナライザで可視化します。OS情報を含めて根こそぎ情報をとってきて可視化するそうです。現時点では、x86のLinux上でのみ使えます。VMのネイティブコードでObjectクラスのvtableをいじって)、そこで情報を収集することで負荷を3.5〜4.5%に留めるよう工夫をしています。デッドロックのリアルタイム検出では、SNMPでトラップするようになっています(デモのログではMIB情報がコンソールに出ていた)。6のG1GC、SerialGCには対応していない(制限がある)そうです。1.1がリリースされ、オブジェクト参照関係の情報、クラスローダー情報の収集解析が追加されました。標準とCPUの機能によって3種類に分けられていることを知りました。IIではSSE4は搭載しているようです。ENdoSnipehttp://www.endosnipe.com/データの収集に加えて、ENdoSnipeの最大の特色は診断機能です。他の解析ツールは、収集した情報の意味を理解して状況を把握し障害原因を調べる必要がありますが、ENdoSnipeは収集した情報を自動解釈し診断結果を提示します。SQLフルスキャン発生、メモリリーク発生などです。運用中は少ない負荷で必要最小限の情報を収集する運用モードと、負荷は大きいが詳細情報を収集する開発モードを用意しています。バイトコードインストゥルメンテーション技術で情報を取っているので、前2つのツールに比べると負荷が大きいのかなと思います。オブジェクトの参照は追えないそうです。ENdoSnipeはWebアプリケーションとして作られているので、ツールのセットアップではPostgreSQLとtomcatの設定が必要です。5.1β1がリリースされています。8u40がリリースされました。9はてなブログをはじめよう!torutkさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。