JJUGナイトセミナー「Java解析ツールバトル」に行ってきました
2013/09/10 (火) 19:00 – 21:00に日本オラクル青山センターで開催された
JJUG ナイト・セミナー 「Java解析ツールバトル」に行ってきました。
参加申し込み者があまりにも多すぎてキャンセル待ちでしたが、なんとか滑り込めました。。よかった!
HeapStats
発表者 : 末永 恭正さん(@YaSuenag / NTT OSSセンタ) 、
久保田 祐史さん (@sugarlife / NTT OSSセンタ)
HeapStatsはNTT OSSセンタが開発したJavaVM のヒープやGCの解析ツール。HeapStatsが本日(9/10)リリースされています。
- GPLv2のOSS
- 主にOutOfMemoryとデッドロックの解析にフォーカス
- 事前に仕掛けておくとわざわざ障害再現させなくても解析可能
- GCの発生要因までサジェスト
- 普通のJVMのクラスヒストグラムはめっちゃ重いけど、HeapStatsはGCのマーキングに注目した工夫により、GCサイクルと完全に同期することでGC時間+αで完了する
- かなりディープな作りこみをしている模様
- SNMPTRAPで運用監視ツールとも連携可能
- 対応プラットフォームはLinux(x86)上のOpenJDKのみ
- アプリパフォーマンスへの影響は5%未満
- 今後のロードマップではUIの改善(JavaFX)
HeapStats陣営の方のエントリはこちら。
ENdoSnipe
発表者 : 谷本 心さん (@cero_t / Acroquest Technology株式会社)
ENdoSnipeはAcroquest Technologyが開発したJavaアプリの解析・診断ツール。
- MIT LicenceのOSS
- 元々商用製品だったけど、海外展開をきっかけにOSS化
- テーブルのフルスキャンの検出では、スタックトレースだけでなく、SQLの実行計画まで表示
- 可視化だけでなく診断までやるのが強み
- 導入時には、あらかじめPostgreSQLとTomcatをセットアップしておく必要あり
- 今後のロードマップでは対応範囲をJava以外にも広く拡大
ENdoSnipe陣営の方のエントリはこちら。
Java Flight Recorder
発表者 : 杉 達也さん(日本オラクル株式会社)
Java Flight RecorderはOracle Java SE JDK付属のJava解析ツール。7u40で同梱される予定とのことです。
- JRockit Flight RecorderをHotSpotに移植したもの
- HotSpotとJRockitはだんだんJava SEに統合されてて、Java SE 8で統合完了予定
- スレッドごとに時系列上でイベントを可視化可能
- この機能はHeapStats開発者さんにかなり好評
- アプリパフォーマンスへの影響は3%未満
- 他のツールに比べてかなりズルいことやってオーバーヘッドを低減
- Oracleしか触れないAPIとかいろいろ使ってるっぽい
- 詳細情報まで取得すると5%程度
- 他のツールに比べてかなりズルいことやってオーバーヘッドを低減
- 商用利用には有償サポート契約が必要
- 利用するにはJVMのオプションに下記を追加する必要あり(!)
-XX:+UnlockCommercialFeatures -XX:+FlightRecorder
- すごいあからさまなオプション名・・・
総評
Java Flight Recorderが完成度が高い印象ですが、やはり商用利用時の有償サポート契約がネックですね。
HeapStatsはOutOfMemoryやデッドロックと低レイヤにフォーカスしているのに対して、
ENdoSnipeはアプリレイヤにフォーカスしているので、位置づけがだいぶ違いますね。
#VisualVMは今後あんまり流行らなそうですね・・・。
3つのツールとも、目指すところは本番環境での利用とのことで、
アプリパフォーマンスへの影響を低減しながら詳細な解析を可能にする方向性でした。
今後は、本番環境に解析ツールを仕込んだ状態で運用するというのが一般的になるのかも?