<Insert Picture Here>
全ての挙動は記録される! 高信頼性JVM「JRockit」
Copyright© 2010, Oracle. All rights reserved. 1
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、
情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。
以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するもので
はないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して
記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定され
ます。
Oracleは、米国オラクル・コーポレーション及びその子会社、関連会社の 米国及びその他の国における登録商標 または商標です。そ の他の名称はそれぞれの会社の商標の可能性があります。アジェンダ
•
サーバーサイド用途に最適化された高性能JVM 「Oracle
JRockit」の内部動作を含む詳細と、障害をさかのぼって原
因究明できるようにするJRockit R28の新機能「Flight
Recorder」について、デモを交えて解説します。
1.
JRockit Flight Recorder 概要
2.
JRockit Flight Recorder デモ
Copyright© 2010, Oracle. All rights reserved. 3
アジェンダ
1.
JRockit Flight Recorder 概要
2.
JRockit Flight Recorder デモ
障害パターンと調査方法(一般)
システム停止
Out of Memory
スローダウン
コアダンプ
JVMクラッシュ
サーバログ
スレッドダンプ
スタックスレッド
落ちた瞬間の情報のみ
ログに有益な情報が
出ているとは限らない
障害直前のダンプは大抵取れてない
マシンクラッシュ
OSクラッシュ
現象
システム的原因
調査手段
問題点
メモリの利用状況と
GC発生状況が分かるのみ
確固たる情
報が得られ
ず、デバッグ
ログを仕掛け
たり、推測に
よるアプリ修
正をして再現
待ち
・・・迷宮入り
GCログ
GC頻発
Copyright© 2010, Oracle. All rights reserved. 5
障害パターンと調査手段(JFR利用時)
システム停止
Out of Memory
スローダウン
コアダンプ
JVMクラッシュ
サーバログ
スレッドダンプ
スタックスレッド
マシンクラッシュ
OSクラッシュ
現象
システム的原因
調査手段
アプリ不具合
ソースコード
調査に必要
な情報が
Flight
Recorderで
既に取得でき
ているため、
速やかに問
題を特定し修
正
GCログ
GC頻発
JR
ockit
Fli
ght
Re
corder
+
循環バッファ
JRockit Flight Recorder
障害対応を強力に支援するOracle JRockitの新機能
Java EE/ISV アプリ Oracle WebLogic Server Oracle JRockit メモリ利用率の増加傾向 メモリ内データの 内訳と増加率JRockit Flight Recorder
自動記録
常時記録
"
録りっぱなし
"
自動ファイル出力
DB関連処理内訳と SQL毎の負荷リスト記録されるデータ(例)
Javaスレッドの処理状況GUIツール
特徴②情報消失の防止[これまでの障害対応の課題]
•
ログでは足りない
情報不足
•
ダウンや再起動による
情報消失
[JRockit Flight Recorderによる解決]
•
詳細情報を
常時記録
Copyright© 2010, Oracle. All rights reserved.
1.
"録りっぱなし": 独自の低負荷技術により本番環境での常時記
録を実現
•
ログ並みの低負荷で、Javaプロファイラ並みの情報量
•
JRockitの内部機構(自己診断機能)を利用した低負荷記録
2.
情報消失を防ぐファイル出力機能
•
エラーや性能劣化などをトリガーに
記録情報を自動ファイル出力
(リモートコマンドやツールから
手動でファイル出力することも可能)
3.
適用が容易
•
別モジュールのインストール等不要
•
アプリケーション改変不要
これまでの障害対応ソリューションとの違い
Java
プロファ
イラ
性能劣化: 大
情報量: 多
情報量: 尐
ログ、
ダンプ等
JRockit
Flight
Recorder
性能劣化: 小
システムインテグレーターにとっての価値
1.障害リスクと対応コストの最小化
•
本番環境のデータを常時記録し迅速な対応を実現
2.顧客からの信頼度向上
•
説明責任を果たすための、事実に基づく原因分析
JRockit Flight Recorderが提供する価値
エンドユーザーにとっての価値
1.機会損失の最小化
問題の迅速、確実な解決と再発防止
2.社会的信用、ブランド価値の維持
Copyright© 2010, Oracle. All rights reserved.
品質管理
運用管理・監視
システム・ライフサイクル管理における
JRockit Flight Recorder
Application
Testing Suite
Grid Control
問題解析・対処
JRockit Flight
Recorder
•
迅速かつ正確な障
害対応
•
再発防止と
説明責任
安定・耐障害
JRockit Flight Recorder の活用例
1.
障害解析のために利用
障害発生時にダンプされた情報をもとに原因を調査
2.
性能劣化などSLA違反への対応
性能劣化などのSLA違反をトリガーにダンプを出力
間欠的に発生する事象の把握に有効
レスポンスタイム SLA境界ダンプを解析
Copyright© 2010, Oracle. All rights reserved. 11
アジェンダ
1.
JRockit Flight Recorder 概要
2.
JRockit Flight Recorder デモ
ライブセット増加により
OutOfMemoryError発生
Copyright© 2010, Oracle. All rights reserved.
レコーディング期間中のヒ
ープ内のオブジェクト占有
率と増加率
当該オブジェクトをヒープ
に割り当てた箇所を特定
Copyright© 2010, Oracle. All rights reserved.
レコーディング期間中のスレッド
一覧→灰色の箇所はThread
Parked(待機中)
WebLogicタブを選択すると、
Servlet、JDBCなどの処理状況
が併せて表示される
Servlet JavaVM JDBCCopyright© 2010, Oracle. All rights reserved.
Thread Parkedを発生させている
のはどこかトレースすることも可
能
Copyright© 2010, Oracle. All rights reserved.
JTA、JMS及び関連処理の前後関係と所要時間
Servlet Java JTA JDBC JAXWS EJBJTA、JMS及び関連処理の前後関係と所要時間
スレッドグラフ(拡大)
①
Servlet: 実行
②
JTA: トランザクション開始
③
JDBC: コネクション取得
④
JDBC: コネクション準備(Prepare)
⑤
JDBC: SQL実行
⑥
JDBC: コネクションClose
⑦
JTA: トランザクションCommit
①
②
③
④
⑤
⑦
⑧
⑥
実行したSQLも併
せてレコーディン
グ
Copyright© 2010, Oracle. All rights reserved. 21
アジェンダ
1.
JRockit Flight Recorder 概要
2.
JRockit Flight Recorder デモ
JRockit Flight Recorderのアーキテクチャ
循環バッファー
Thread local Buffer
新しいデータ
あふれたら 移動 あふれたら 移動Global Buffer
循環バッファー
イン・メモリ
Event
•
循環バッファー
•
Flight Recorderが記録される領域
•
インメモリもしくは、インメモリ+ディスクの組み合わ
せの両方の構成が可能
•
Thread Local Buffer
•
各スレッドが持つローカルバッファ領域
•
新規イベントはここに格納される
•
デフォルトは、5KB/Thread。変更可能
•
Global Buffer
•
Thread Local Bufferがあふれた場合に、イベントが
格納される領域
•
デフォルトは、452KB×22個=10MB。変更可能
•
Disk File
•
Global Bufferからあふれた際に記録されるDiskファ
イル。
•
Chunk単位に分割されて格納される(デフォルトの
Max Chunk sise=12MB)
Copyright© 2010, Oracle. All rights reserved. 23
JRockit Flight Recorderのアーキテクチャ
記録の開始とダンプ
JRockit JVM
JRockit Mission Control
WLST
jrcmd
ダンプ
JRockit Flight Recorder
Runtime
循環バッファー
*.jfr
WebLogic Server Family
JRockit Family
WLDF
診断ボリュームの設定によるFlight記録の開始ルールベースのダンプ 記録の開始 経過時間後のダンプ 予期せぬ例外契機のダンプ 記録の開始 記録中情報の確認 ダンプ ダンプファイルの解析 jfsの作成ウィザード 記録の開始 記録中情報の確認 ダンプ起動引数
記録の開始 記録中情報の確認 ダンプ 解析Flight記録操作方法
•
JRockit起動オプションによる記録の開始
•
jrmcd による記録の操作
•
JRockit Mission Controlによる記録の操作
Copyright© 2010, Oracle. All rights reserved.
JRockit起動オプションによる記録の開始
•
JRockit起動オプションでの指定
•
有効化オプション
•
-XX:[+|-]FlightRecorder
•
+で有効化 / -で無効化(デフォルトは無効)
•
JFR設定(循環バッファーの設定、デフォルト記録などの設定)
•
-XX:FlightRecorderOptions=param1=value1[,param2=value2]
•
デフォルト記録の開始
•
-XX:FlightRecorderOptions=defaultrecording=true
•
デフォルト記録はデフォルトでoff
•
カスタム記録の開始
•
-XX:StartFlightRecording=parameter1=value1[,parameter2=value2]
25(ご参考) -XX:FlightRecorderOptions
パラメータ
説明
デフォルト
defaultrecording=true|false デフォルト記録を有効にするかどうか
FALSE
disk=true|false
デフォルト記録をディスクに書き込むかどうか
FALSE
globalbuffersize=size
グローバルバッファーサイズの指定
452 KB
numglobalbuffers=num
グローバルバッファーサイズの数の指定
22個
maxage=time
デフォルト記録のディスクデータの最大存続期間
Disk=trueの場合のみ有効
15 分
maxchunksize=size
Flight記録の最大チャンクサイズ、ディスクファイル
はこの容量で分割
すべてのFlight記録で有効
1MB
maxsize=size
デフォルト記録で書き込まれるディスクファイルの
最大容量、Disk=trueの場合のみ有効
Unbound
repository=file location
ディスクファイルの出力先ディレクトリ
yyyy_mm_dd_hh_mm_ss_pid フォーマットでディ
レクトリが作られその配下にファイル作成
java.io.tmpdir ディレクトリ
settings=file location
イベント設定ファイルの指定(.jfs)
jre/lib/jfr/default.jfs
Copyright© 2010, Oracle. All rights reserved. ※)–XX:StartFlightRecordingを指定する場合は、ディスクファイルは必ず作成されます
(ご参考) -XX:StartFlightRecording
27パラメータ
説明
デフォルト
compress=true|false
Flight記録ファイル(.jfr)をgzip圧縮するかどうか。
filenameの設定をしている場合のみ有効
FALSE
defaultrecording=true|
false
デフォルト記録を有効にするかどうか。
name/duration/filename/compressと併用はでき
ない。
FALSE
delay=time
ランタイムがFlight記録を開始するまでの待機時
間
0
duration=time
Flight記録を記録し続ける時間
制限なし
filename=name
Flight記録ファイル(.jfs)のファイル名
指定しない場合、jfsファイルは作られない
name=identifier
Flight記録を識別するための名前
Recording X (例:Recording 1)
filenameに指定がある場合は、その名称
maxage=time
ディスクファイル(※)にイベントが保存されている
最大時間
制限なし
maxsize=size
ディスクファイル(※)の最大容量
制限なし
settings=eventfile
イベント設定ファイルの指定
XX:FlightRecorderOptionsの
settingパラメータの設定
設定例) -XX:StartFlightRecording=delay=120s,duration=60s,name=MyRecording,filename=C:¥tmp¥myrecording.jfr,settings=profilejrcmdによる記録の操作①
•
Flight記録の開始
•
jrcmd <pid> start_flightrecording param1=value1 [param2=value2]
•
<pid>: JRockit プロセスID
•
<param>: “-XX:StartFlightRecording“ と同様のパラメータ
※ただしパラメータ区切りは半角スペース
例) jrcmd <pid> start_flightrecording delay=120s duration=60s name=MyRecording
•
Flight記録の停止
•
jrcmd <pid> stop_flightrecording param1=value1 [param2=value2]
•
<pid>: JRockit プロセスID
•
<param>: 次ページ参照
Copyright© 2010, Oracle. All rights reserved.
jrcmdによる記録の操作②
•
Flight記録の情報参照
•
jrcmd <pid> check_flightrecording param1=value1 [param2=value2]
•
<pid>: JRockit プロセスID
•
<param>: 次ページ参照
例) jrcmd <pid> check_flightrecording recording=2 verbose=true
•
Flight記録のダンプ
•
jrcmd <pid> dump_flightrecording param1=value1 [param2=value2]
•
<pid>: JRockit プロセスID
•
<param>: 次ページ参照
例) jrcmd <pid> check_flightrecording recording=2 verbose=true
(ご参考) jrcmd パラメータ①
パラメータ
説明
デフォルト
name=<string>
Flight記録の名称
recording=<id>
Flight記録ID
discard=<true | false>
trueの設定した場合、Flight記録データを
破棄する
false
copy_to_file=<string>
Flight記録をダンプして、指定したファイル
(.jfr)に出力。ディレクトリパスを含めたファ
イル名を指定
compress_copy=<true | false> .jfrファイルをgzip圧縮するかどうか
false
Copyright© 2010, Oracle. All rights reserved.
(ご参考) jrcmd パラメータ②
31パラメータ
説明
デフォルト
name=<string>
Flight記録の名称
recording=<id>
Flight記録ID
copy_to_file=<string>
Flight記録をダンプして、指定したファイル
(.jfr)に出力。ディレクトリパスを含めたファ
イル名を指定
compress_copy=<true | false> .jfrファイルをgzip圧縮するかどうか
false
dump_flightrecording パラメータ
check_flightrecording パラメータ
パラメータ
説明
デフォルト
name=<string>
Flight記録の名称
recording=<id>
Flight記録ID
JRockit Mission Controlによる記録の操作①
対象JRockitプロセスを
右クリック
フライト記録の開始
テンプレート:取得するイベントに応じ
て4種類用意(後述参照)
Copyright© 2010, Oracle. All rights reserved.
JRockit Mission Controlによる記録の操作②
33
対象JRockitプロセスを右クリック
記録の表示
対象記録を右
クリック
編集/ダンプ/停
止操作が可能
WLDF診断ボリュームによるFlight記録の開始
•
WebLogic Serverが実行時にJRockit Flight Recorder用に生成するイベ
ントの量を制御可能
•
明示的に構成されたWLDFの診断モジュールには影響しない
•
ドメイン>環境>サーバ>構成>全般>診断ボリューム
Copyright© 2010, Oracle. All rights reserved. 35
Flight Recorderで記録するイベント量の設定
•
JRockit Mission Control提供のテンプレートでの指定(4段階)
•
リアル・タイム(組込み) ・・・ デフォルトのレコーディング
•
通常のプロファイリング ・・・ 「リアルタイム(組込み)」+メモリアロケーション
•
ロックを含むプロファイリング ・・・ 「通常のプロファイリング」+ロック
•
例外を含むプロファイリング ・・・ 「通常のプロファイリング」+例外
•
WebLogicの「WLDF診断ボリューム」での指定(4段階)
•
Off・・・ 取得しない(デフォルト)
•
Low ・・・ JRockit「リアル・タイム(組込み)」+WebLogicイベント(Low)
•
Medium ・・・ 「Low」+WebLogicイベント(Medium)
•
High ・・・ 「Medium」+WebLogicイベント(High)
(ご参考) Flight Recorderで記録できる情報
分類 取得項目 JRockit JRMCでの指定 WLSでの指定 デフォ ルト リアル タイム 通常 ロック 含む 例外含む Off Low Middle High
OS コンテキスト・スイッチ ○ ○ ○ ○ ○ ○ ○ ○ CPUビジー ○ ○ ○ ○ ○ ○ ○ ○ 物理メモリ使用状況 ○ ○ ○ ○ ○ ○ ○ ○ 環境変数の情報 ○ ○ ○ ○ ○ ○ ○ ○ 自JVM以外のプロセスの情報 Java VM オブジェクト・アロケーション ○ ○ ◎ ◎ ◎ ○ ○ ○ ガーベッジ・コレクション ○ ○ ◎ ◎ ◎ ○ ○ ○ 空きメモリー ○ ○ ◎ ◎ ◎ ○ ○ ○ Nativeコード最適化 ○ ○ ○ ○ ○ ○ ○ ○ 自JVMのCPUビジー ○ ○ ○ ○ ○ ○ ○ ○ システム・プロパティ ○ ○ ○ ○ ○ ○ ○ ○ クラス・ロード ○ ○ ○ JITコンパイル ○ ○ ○ クラス別ヒープ利用状況 ○ ○ ○ Java App ファイル/ソケットの読み書き ○ ○ ○ ○ ○ ○ ○ ○ ロック獲得/待機、イベント待機 ○ ○ ○ ◎ ○ ○ ○ ○ 例外 ○ Connector ○ ○ ○ Servlet ○ ◎ ◎+
Copyright© 2010, Oracle. All rights reserved.
(ご参考) JFRのオーバヘッド
37WLDF診断ボリューム
診断ボリューム:高でも、オフと比べて数パーセント
のオーバヘッドのみ
※この結果は弊社環境での測定値です Intel(R) Core(TM)2 CPU 2.13GHz Linux 2.6.9-67.0.0.0.1.ELsmp WebLogic10.3.3にバンドルされている JRockit 診断ボリューム:高 -Xmx1024m(その他JVM設定はデフォルト 設定) アプリケーションはWebLogicのサンプルに 付属しているmedrecアプリケーション 一般的な検索→一覧→詳細の画面遷移シ ナリオ 負荷の与え方:OracleATSでシンクタイム0 で同時ユーザ数30で繰り返し処理(ご参考) サイジング
•
サイジング観点では、Flight記録をDiskに書き込む際のディス
ク容量のサイジングは必要
•
運用上、どれくらいの期間の記録を保持すべきか、およびイベ
ントの発生量(=システムの負荷)で、ディスク容量は決まる
•
参考値)
•
イベントあたり、50Byte~150Byte(イベントの種類や、スタックトレース有無、対象のク
ラス名の長さなどにより変動)
•
約120ページ数/秒のトランザクションで負荷を与え3分間フライトレコーダーを記録しつ
づけてダンプをとった場合の.jfrのサイズが約4MBytes (※)
•
上記負荷で一日記録をし続けた場合に必要となるディスク領域は4* (60/3) *24=約
1.92GBytes
※この結果は弊社環境での測定値です 診断ボリューム:高Copyright© 2010, Oracle. All rights reserved.
Flight記録画面の特徴
範囲選択
39範囲選択により注目したい時間
帯に絞り込んだ参照が可能
すべての画面で利用可能
ズームイン/ズー
ムアウト
範囲のスライド
Flight記録画面の特徴
操作セット①
注目したいイベントを
操作セットに追加
時系列上、操作セット
のみ色が変更して表
示
Copyright© 2010, Oracle. All rights reserved.
Flight記録画面の特徴
操作セット②
41特定イベントのECIDに一致
する操作設置を追加すると、
関連するイベントのみが抽出
される
あるサーブレットの処理に関
連するECIDを操作セットに追
加すると
関連するEJB処理なども操作
セットに追加される
Flight記録画面の特徴
イベント-概要
各プロデューサ
ーが記録したイ
ベントのサマリ
ー
イベント毎のサマ
リー
Copyright© 2010, Oracle. All rights reserved.
Flight記録画面の特徴
イベント-ログ
43時系列に沿っ
た個々のイベ
ント表示
選択したイベントノ
詳細
Flight記録画面の特徴
イベント-グラフ
スレッドごとの
イベントグラフ
表示
ズーム可能
Copyright© 2010, Oracle. All rights reserved. 45
是非Flight Recorderを使ってみてください!!
•
JFR評価版ダウンロード
•
JRockit R28.0(Flight Recorderを搭載したJRockit)
•
http://www.oracle.com/technology/global/jp/software/products/jrockit/index.html
•
WebLogic Server 10.3.3(JRockit R28.0を同梱したWebLogic Server)
•
http://www.oracle.com/technology/global/jp/software/products/ias/htdocs/wls_main.ht
ml
•
Flight Recorder関連マニュアル
•
Oracle JRockit Flight Recorder Runtime Guide
•
http://download.oracle.com/docs/cd/E15289_01/doc.40/e15070/toc.htm
•
Using WLDF with Oracle JRockit Flight Recorder
•
http://download.oracle.com/docs/cd/E14571_01/web.1111/e13714/using_flightrecord
er.htm
•
JRockit -XX Command-Line Option
•
http://download.oracle.com/docs/cd/E15289_01/doc.40/e15062/optionxx.htm
•
JRMC Eclipse Update Site
•
http://www.oracle.com/technology/software/products/jrockit/missioncontrol/updates/base
/4.0.1/eclipse/
イベントのお知らせ
2010年8月19日(木) 13:30~18:30 @ 目黒雅变園
Java と Solarisの最新情報をお知らせします。
詳しくは
Copyright© 2010, Oracle. All rights reserved.
OTN×ダイセミ でスキルアップ!!
※OTN掲示版は、基本的にOracleユーザー有志からの回答となるため100%回答があるとは限りません。
ただ、過去の履歴を見ると、質問の大多数に関してなんらかの回答が書き込まれております。
Oracle Technology Network(OTN)
を御活用下さい。
・一般的な技術問題解決方法などを知りたい!
・セミナ資料など技術コンテンツがほしい!
一般的技術問題解決にはOTN掲示版の
「ミドルウェア」
をご活用ください
http://otn.oracle.co.jp/forum/category.jspa?categoryID=4
過去のセミナ資料、動画コンテンツはOTNの
「OTNセミナー オンデマンド コンテンツ」
へ
http://www.oracle.com/technology/global/jp/ondemand/otn-seminar/index.html
※ダイセミ事務局にダイセミ資料を請求頂いても、お受けできない可能性がございますので予めご了承ください。
ダイセミ資料はOTNコンテンツ オン デマンドか、セミナ実施時間内にダウンロード頂くようお願い致します。
OTNセミナー オンデマンドコンテンツ
ダイセミで実施された技術コンテンツを動画で配信中!!
Copyright© 2010, Oracle. All rights reserved.
オラクル クルクルキャンペーン
Enterprise Edition
はここが違う!!
•
圧倒的なパフォーマンス
! •データベース管理がカンタン
!
•データベースを止めなくていい
! •もちろん障害対策
も万全! Oracle Databaseの ライセンス価格を大幅に抑えて ご導入いただけます詳しくはコチラ
http://www.oracle.co.jp/campaign/kurukuru/index.html
あの
Oracle Database Enterprise Edition
が超おトク
!!
お問い合わせフォーム
http://www.oracle.co.jp/inq_pl/INQUIRY/quest?rid=28
多くのお客様でサーバー使用期間とされる 5年間にライセンス期間を限定 •期間途中で永久ライセンスへ差額移行 •5年後に新規ライセンスを購入し継続利用 •5年後に新システムへデータを移行http://www.oracle.co.jp/inq_pl/INQUIRY/quest?rid=28
Oracle Direct
検索
あなたにいちばん近いオラクル
Oracle
Direct
まずはお問合せください
Web問い合わせフォーム
フリーダイヤル
専用お問い合わせフォームにてご相談内容を承ります。
※フォームの入力には、Oracle Direct Seminar申込時と同じ ログインが必要となります。
0120-155-096
※月曜~金曜 9:00~12:00、13:00~18:00
システムの検討・構築から運用まで、ITプロジェクト全般の相談窓口としてご支援いたします。
システム構成やライセンス/購入方法などお気軽にお問い合わせ下さい。
Copyright© 2010, Oracle. All rights reserved.