Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

Java Flight Recorderの紹介 at Java Day Tokyo 2015

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Nächste SlideShare
Hello Java
Hello Java
Wird geladen in …3
×

Hier ansehen

1 von 81 Anzeige

Weitere Verwandte Inhalte

Diashows für Sie (20)

Andere mochten auch (20)

Anzeige

Ähnlich wie Java Flight Recorderの紹介 at Java Day Tokyo 2015 (20)

Anzeige

Aktuellste (20)

Java Flight Recorderの紹介 at Java Day Tokyo 2015

  1. 1. Java Flight Recorderの紹介 日本オラクル株式会社 コンサルティングサービス事業統括 プリンシパルコンサルタント 伊藤 智博 Java Day Tokyo 2015 2015年4月8日 Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |
  2. 2. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | • 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。 また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むこ とはできません。以下の事項は、マテリアルやコード、機能を提供することを コミットメント(確約)するものではないため、購買決定を行う際の判断材料 になさらないで下さい。オラクル製品に関して記載されている機能の開発、リ リースおよび時期については、弊社の裁量により決定されます。 4 OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。 文中の社名、商品名等は各社の商標または登録商標である場合があります。
  3. 3. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | アジェンダ はじめに Java Flight Recorderを使った分析 従来の分析方法 これからの分析方法 まとめ 1 2 3 4 5 5
  4. 4. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | こんなことありませんか? ある期間スローダウン 突然プログラムが終了 6
  5. 5. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | OS情報 •リソース •プロセス ログ •Java VMのログ •アプリのログ –問題点 •問題を事前に想定 7 どのように分析しますか?
  6. 6. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | ダンプ •スレッドダンプ •ヒープダンプ –問題点 •タイミングが困難 プロファイラ •JavaVM情報 •実行メソッド情報 –問題点 •高負荷 8 どのように分析しますか?
  7. 7. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 現状は? 取ってない 取れなかった 取らせてもらえない 9 情報を
  8. 8. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | “もうこんな事で 苦労しなくても良いんです” 10
  9. 9. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | “これからは、 Java Flight Recorderを ご利用ください” 11
  10. 10. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | Java Flight Recorder とは 障 害 分 析 ツ ー ル 12
  11. 11. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | アジェンダ はじめに Java Flight Recorderを使った分析 従来の分析方法 これからの分析方法 まとめ 1 2 3 4 5 13
  12. 12. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | Java Flight Recorderを使った分析 14 簡単 短縮低負荷簡単
  13. 13. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 記録 可視化 15 2つのツール Java Mission ControlJava Flight Recorder
  14. 14. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 16 タブ タブ・グループ ヒープ 使用量 CPU 使用率 GC 時系列のCPU使用率 JavaVMのバージョン Java Mission Control ダッシュボード
  15. 15. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | Java Flight Recorderの起動 起動オプションをたった2つ追加 17
  16. 16. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | Java Flight Recorderを使った分析 18 簡単 短縮低負荷
  17. 17. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | Java VM 19 プロファイラとJava Flight Recorderの比較 Java Flight Recorder Java VM JVMTI プロファイラ
  18. 18. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 100 0 25 50 75 100 無効時 Java Flight Recorder 有無のパフォーマンス比較 100 98 0 25 50 75 100 無効時 有効時 20 %
  19. 19. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | Java Flight Recorderを使った分析 21 簡単 短縮低負荷
  20. 20. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 従来のやり方 障 害 分 析 対 応 再現待ち 障 害 分 析 対 応 確 認 22 システムの範囲 絞り込んだ範囲 原因
  21. 21. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 23 Java Flight Recorderで収集される情報 全般 メモリー コード スレッド I/O システム イベント
  22. 22. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | Java Flight Recorder バッファ 24 Java Flight Recorderの情報保持方法 情報情報情報情報情報
  23. 23. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | これからのやり方 25 障 害 分析 対 応 確 認 解決までの時間を短縮! システムの範囲 原因
  24. 24. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | アジェンダ はじめに Java Flight Recorderを使った分析 従来の分析方法 これからの分析方法 まとめ 1 2 3 4 5 26
  25. 25. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | “○○のECサイトが遅い” 27
  26. 26. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 分析 28 障 害 分析 対 応 確 認ログ収集 絞り込みログ収集
  27. 27. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | ログを収集 様々なログを都度収集 •アクセスログ •CPU使用率 •スレッドスタック 29
  28. 28. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 分析 30 障 害 分析 対 応 確 認ログ収集 絞り込み絞り込み
  29. 29. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 31 スローダウン CPU高騰 GC オブジェクト生成 障 害 分析 対 応 確 認収 集 絞 込 アーキテクチャ ヒープ逼迫ヒープ逼迫GCCPU高騰
  30. 30. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 32 CPU使用率とヒープ使用率の分析 0% 20% 40% 60% 80% 100% CPU ヒープ GC多発GC オブジェクトを大量生成する処理 時間 使用率 使用量 (≒同時刻に処理時間の長い処理)
  31. 31. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 33 スローダウン CPU高騰 GC オブジェクト生成 障 害 分析 対 応 確 認収 集 絞 込 アーキテクチャ ヒープ逼迫 EJBServlet Java アプリケーション オブジェクト生成
  32. 32. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 34 アプリケーションの構成と分析方法 ユーザ EJB ログ出力 Servlet Java
  33. 33. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 35 呼び出し階層から時間の長い処理を特定する ユーザ サーブレット3 サーブレット2 サーブレット4 サーブレット1 EJB B EJB A EJB C EJB D Java Java ? Java Java Java Java Java Java 呼び出し 時間の掛かる呼び出し 障 害 分 析 対 応 再現 待ち 障 害 分 析 対 応 再現 待ち 障 害 分 析 対 応 再現 待ち 障 害 分 析
  34. 34. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 時間の掛かっている処理 分析 –=オブジェクトを大量生成 と予想 対応 –ログのコード追加 –再現待ち –特定するまで繰り返す 36
  35. 35. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | アジェンダ はじめに Java Flight Recorderを使った分析 従来の分析方法 これからの分析方法 まとめ 1 2 3 4 5 37
  36. 36. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | “○○のECサイトが遅い” 38
  37. 37. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 分析 39 障 害 分析 対 応 確 認ログ収集 絞り込みログ収集
  38. 38. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | ログを収集 Java Flight Recorderを取得する 40
  39. 39. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | Java Mission Control の起動方法 Windows %JAVA_HOME%¥bin¥jmc.exe Linux ${JAVA_HOME}/bin/jmc 41
  40. 40. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | Java Mission Control からのダンプ方法 42 JVMブラウザ フライト・レコーダ一覧 右クリック
  41. 41. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | ダンプ後の画面例 43
  42. 42. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 44 JFRの記録範囲とスローダウン 安定稼働 スローダウン 安定 稼働 ダンプ起動 Java Flight Recorderの記録消えた範囲
  43. 43. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 分析 45 障 害 分析 対 応 確 認ログ収集 絞り込み絞り込み
  44. 44. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 46 スローダウン CPU高騰 GC オブジェクト生成 障 害 分析 対 応 確 認収 集 絞 込 アーキテクチャ ヒープ逼迫CPU高騰
  45. 45. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 47 100% 60% 20% ドラッグクリック OSプロセス CPU使用率 時間 使用率
  46. 46. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 48 高負荷時のCPU使用率 100% 60% 20% 時間 使用率
  47. 47. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | スローダウン CPU高騰 GC オブジェクト生成 障 害 分析 対 応 確 認収 集 絞 込 アーキテクチャ ヒープ逼迫GC
  48. 48. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | [メモリ]グループ [GC回数]タブ 50 GCの休止 メモリー GC回数
  49. 49. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 51 300ms 200ms 100ms GC 停止時間 GCが頻繁に実行 1回のGC 停止時間 GC間隔
  50. 50. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 52 スローダウン CPU高騰 GC オブジェクト生成 障 害 分析 対 応 確 認収 集 絞 込 アーキテクチャ ヒープ逼迫ヒープ逼迫
  51. 51. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 53 メモリー 概要 メモリー使用状況 [メモリ]グループ [概要]タブ
  52. 52. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 54 64MB ヒープ使用量 256MB 回収量 使用量 時間
  53. 53. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 55 スローダウン CPU高騰 GC オブジェクト生成 障 害 分析 対 応 確 認収 集 絞 込 アーキテクチャ ヒープ逼迫 EJBServlet Java アプリケーション オブジェクト生成
  54. 54. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 56 Oracle WebLogic Serverの情報取得 アプリケーション Java Flight Recorder Java VM OS アプリケーション Oracle WebLogic Server
  55. 55. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 57 アプリケーションの構成と分析方法 ユーザ EJBServlet イベント収集 Java
  56. 56. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | イベントとは •JFRが取得する情報 –イベントの例: •スレッドロック待ちイベント •例外発生イベント 58
  57. 57. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | [イベント]グループ [グラフ]タブ 59 イベント イベント・タイプ グラフ イベント
  58. 58. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 60 イベントグラフとイベント ディスク書込待機スレッド 2:102:00 2:40 2:50 3:002:20 2:30
  59. 59. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 61 イベントグラフとスレッド スレッド1 EJB実行スレッド2 待機 待機 2:102:00 2:40 2:50 3:002:20 2:30
  60. 60. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 62 複数階層のイベントグラフ EJB実行 2:35 2:40 2:50 2:55 待機 通 信 通 信 2:45 WebLogic Application EJB実行の中で通信/待機している
  61. 61. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 63 障 害 分析 対 応 確 認収 集 絞 込 EJBServlet Java スローダウン CPU高騰 GC オブジェクト生成アーキテクチャ ヒープ逼迫 アプリケーション EJBServlet
  62. 62. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 64 スローダウンを視覚的に確認 □ Servlet 実行時間が長期化
  63. 63. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 65 怪しいサーブレットのみを表示対象に設定 右クリック 操作セットに追加 □ Servlet
  64. 64. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 操作セットとは •分析対象を追加した情報に絞る •ユーザが自由に設定可能 •様々な情報を設定可能 66
  65. 65. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 67 怪しいサーブレットに関するイベント 長時間かかるEJB □ Servlet □ EJB Servlet EJB □操作セットのみを表示 スレッド名: [ACTIVE]ExecuteThread: ‘12’ for queue: ‘weblogic.kernel.Default(self-tuning)’
  66. 66. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 68 障 害 分析 対 応 確 認収 集 絞 込 EJBServlet Java スローダウン CPU高騰 GC オブジェクト生成アーキテクチャ ヒープ逼迫 アプリケーション EJBServlet
  67. 67. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | [スレッド]グループ [ホット・スレッド]タブ 69 ホット・スレッド ホット・メソッド スレッド ホット・スレッド
  68. 68. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 70 サンプルカウントの多いメソッドを確認 スタック・トレース パーセンテージ Jdt2015.ejb.OrderHistoryEJB.createObject() 97.73% スレッド パーセンテージ [ACTIVE]ExecuteThread:’12’for queue: ‘weblogic.kernel.Default (self-tuning)’ 69.29% ホット・スレッド ホット・メソッド
  69. 69. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 時間の掛かっている処理 分析 createObject()メソッドが長期化 =オブジェクトを大量生成? 71
  70. 70. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 72 スローダウン CPU高騰 GC オブジェクト生成 障 害 分析 対 応 確 認収 集 絞 込 アーキテクチャ ヒープ逼迫 オブジェクト生成
  71. 71. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | [メモリ]グループ [割り当て]タブ 73 割当てプレッシャ メモリー 割り当て スタックトレース
  72. 72. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 74 割り当てプレッシャ スタック・トレース パーセンテージ Jdt2015.ejb.OrderHistoryEJB.createObject() 99.59% スレッド パーセンテージ [ACTIVE]ExecuteThread:’12’for queue: ‘weblogic.kernel.Default (self-tuning)’ 91.56% 割当てプレッシャ スタックトレース
  73. 73. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | オブジェクトを大量に生成している処理 分析 大量のオブジェクト生成の原因解明 対応 createObject()を修正 75
  74. 74. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | アジェンダ はじめに Java Flight Recorderを使った分析 従来の分析方法 これからの分析方法 まとめ 1 2 3 4 5 76
  75. 75. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | まとめ •JFRの利点 –簡単、低負荷、短縮 •実例で確認 –GUIによる簡単な分析 –再現待ちせず短期間で原因を解明 •Java Flight Recorderをお使い下さい 77
  76. 76. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | まとめ • Java SE Development Kit 8 サンプルダウンロード – http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html – JDK Downloadページの Demos and Samples Downloadsよりダウンロード可能 • Java Flight Recorderランタイム ガイド – http://docs.oracle.com/javacomponents/jmc-5-5/jfr-runtime-guide/index.html • javaコマンド – http://docs.oracle.com/javase/jp/8/docs/technotes/tools/windows/java.html • トラブルシューティング・ガイド – http://docs.oracle.com/javase/jp/8/docs/technotes/guides/troubleshoot/tooldescr.html 78
  77. 77. Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | 79

×