Flight Recorder、Mission Control、Native Memory Tracking
Oracle (HotSpot) JDK7 update40以降で「Flight Recorder」、「Mission Control」、「Native Memory Tracking」がHotSpotに同梱されている。
これらは元々JRockitの機能だったが、HotSpotとJRockitの統合(HotRockit)に伴いHotSpotへ移植された。
Flight Recorder
OSからアプリケーションのレベルまで、わずかなオーバーヘッドで詳細な稼働情報を収集してログ・ファイルに記録してくれるツール。
Flight Recorderの名の通り、飛行機が離陸してからの記録を随時残してくれるイメージ。
一般のプロファイリング・ツールでは、オーバーヘッドが大きいが、Java Flight Recorderであればそうしたことは無い。
また「サーブレットの応答速度が一定時間を超えた場合」「ヒープの空き容量が一定値を超えた場合」のように指定した閾値を超えた際に記録を出力することもできる。
Flight Recorderが記録できる情報は下記の通り。
分類 | 取得項目 |
---|---|
OS | コンテキスト・スイッチ |
CPUビジー | |
物理メモリの使用状況 | |
環境変数の情報 | |
自JVM以外のプロセス情報 | |
JVM | オブジェクト・アロケーション |
GC | |
空メモリ | |
Nativeコードの最適化 | |
自JVMのCPUビジー | |
システム・プロパティ | |
クラス・ロード | |
JITコンパイル | |
クラス別ヒープ利用状況 | |
Java App | ファイル/ソケットの読み書き |
ロック獲得/待機、イベント待機 | |
例外 | |
WebLogic | Connector |
Servlet | |
EJB | |
JDBC | |
Web Service | |
JTA |
Mission Control
Mission Controlは、Flight Recorderで記録した情報から、システムの稼働状況を分析・可視化するツール。
スタンドアロンのツールに加えて、Eclipseプラグインとしても提供している。
Native Memory Tracking
JRockitの診断コマンドprint_memnusage相当がHotSpotに移植されたもの。
従来では難しかったNative領域のリークを確認できる。
オーバーヘッドは5〜10%あがるとされる。
Flight Recorder
Mission Control
JDKのbin配下に「jmc.exe」というのがあるのでこれを実行すると起動する。
- Flight記録のテンプレート(組み込み)-JRockit
- 通常のプロファイリング
- 標準的なプロファイリング・イベント。低レベルのイベントやリソース消費が大きい一部のイベントは除外。オーバーヘッドは小さい。
- ロックを含むプロファイリング
- 通常のプロファイリング・テンプレートに低レベルのロック・イベントを含む。オーバーヘッドは大きい。
- リアル・タイム
- GC情報などメモリ関連の情報に重点を置く。オーバーヘッドは考慮不要。
- 通常のプロファイリング
- Flight記録のテンプレート(組み込み)-HotSpot
- Continuout(連続)
- 本番環境で連続的に使用しても問題ない低オーバーヘッド構成(通常は1%未満のオーバーヘッド)
- Profiling(プロファイリング)
- プロファイリング用の低オーバーヘッド構成(通常は2%程度のオーバーヘッド)
- Continuout(連続)
■Eclipse plugin
下記のupdate siteを利用してインストール
http://download.oracle.com/technology/products/missioncontrol/updatesites/base/4.1.0/eclipse/
Native Memory Tracking
使い方
- 起動オプション
- 「-XX:NativeMemoryTracking=
」 - off : NativeMemoryTrackingをオフ(デフォルト)
- summary : サブシステム毎のメモリ使用量のみ集計
- detail : summaryに加え、コールサイト毎のメモリ使用量も集計
- 「-XX:NativeMemoryTracking=
- jcmdコマンド
追加オプション
- 「-XX:+UnlockDiagnosticVMOptions」を指定することにより後述の追加オプションを有効化する
- 「-XX:+PrintNMTStatistics」
- VM終了時にNMTの統計情報を出力
- オプション「-XX:NativeMemoryTracking=
」の指定に従う
- 「-XX:-AutoShutdownNMT」
- NMTの自動シャットダウンを無効化
- リソースが少ない状態になるとNMTが自動停止されることへの対策
参考:
http://www.infoq.com/jp/news/2013/10/misson-control-flight-recorder
http://builder.japan.zdnet.com/sp_oracle/weblogic_2013/35038953/
http://acro-engineer.hatenablog.com/entry/20130109/1357692863