今日から始めるトラブルシューティング - Flight Recorder入門

4,234 views

Published on

WebLogic Server上のアプリケーションのスローダウンや異常終了など想定外の不具合が発生した場合は原因の分析や対処が必要になります。本セッションでは、一 般的なトラブルシューティングの概要と、Flight Recorderを使用したトラブルシューティング手法について紹介します。

日本オラクル オラクルユニバシティ
岡田 大輔

0 Comments
14 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,234
On SlideShare
0
From Embeds
0
Number of Embeds
69
Actions
Shares
0
Downloads
0
Comments
0
Likes
14
Embeds 0
No embeds

No notes for slide

今日から始めるトラブルシューティング - Flight Recorder入門

  1. 1. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.1今日から始めるトラブルシューティング- Flight Recorder 入門日本オラクル株式会社オラクルユニバーシティ岡田 大輔2013年05月23日
  2. 2. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.2以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。
  3. 3. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.3はじめに WebLogic Serverがスローダウン / ハングする– データソースの接続先のデータベースからの応答が悪くなる– プロセスのCPU使用率が100%近くなり応答が返らない Javaヒープ使用量が徐々に増え続けていく WebLogic Serverがクラッシュする (Coreを吐く) WebLogic Serverが起動しないよくあるWebLogic Serverのトラブル …原因の特定には適切な情報収集が不可欠!
  4. 4. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.4トラブルシューティングに必要な情報を集める
  5. 5. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.5トラブル発生時に集めるべき情報は? WebLogic Serverのログ情報 JVMのスレッドダンプ 診断イメージキャプチャ Flight Recorder手がかりとなる情報を集める
  6. 6. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.6トラブル発生時に集めるべき情報は? WebLogic Serverのログファイル– サーバーログ … <DOMAIN>/servers/<server_name>/logs/<server_name>.log WebLogic Serverのアクティビティが記録されるログファイル。– ドメインログ … <DOMAIN>/servers/<admin_server>/logs/<domain_name>.log サーバーログを集約したもの。障害調査ではあまり使わない。– HTTPログ … <DOMAIN>/servers/<server_name>/logs/access.log クライアントからのアクセスを記録。拡張フォーマットを使うとリクエスト処理時間も取得可能ログ情報
  7. 7. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.7Tips: HTTPリクエストの処理時間の取得 アクセスログの拡張フォーマットを使用するとHTTPリクエストの処理時間を取得可能HTTPアクセスログの拡張フォーマットを利用フォーマットを 拡張 に変更フォーマット(例):date time c-ip s-ip cs-method cs-uri cs-uri-query sc-status bytes time-taken
  8. 8. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.8トラブル発生時に集めるべき情報は? サーバーの標準出力ログ– サーバーログの一部は標準出力にも出力される– スレッドダンプやJVMのGCログなどが出力されるログ情報運用環境では標準出力はファイルにリダイレクトを推奨(サーバーバログの標準出力への出力はOFFに)
  9. 9. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.9Tips: サーバーの標準出力のリダイレクト サーバーの標準出力のリダイレクトは環境変数 WLS_REDIRECT_LOGを指定するstartWebLogic.sh(cmd)を編集WLS_REDIRECT_LOGの設定を追記
  10. 10. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.10サーバーログのフォーマット サーバーログの属性の一部は標準出力にも表示される– Formatted Timestamp, Severity, SubSystem, Message ID, Message Text– Transation IDやDiagnostic Context IDが存在しない場合は山括弧のみ出力####<2012/09/18 9時26分37秒 JST> <Notice> <WebLogicServer> <DAOKADA-JP><AdminServer> <Main Thread> <<WLS Kernel>> <> <> <1347927997496> <BEA-000365> <サーバー状態がRUNNINGに変化しました。>####<Formatted Timestamp> <Severity> <SubSystem> <Machine Name> <Server Name><Thread ID> <User ID> <Thread ID> <Diagnostic Context ID> <Raw Time value><Message ID> <Message Text>
  11. 11. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.11サーバーログの重大度Severity 説明 ドメインログTRACE 診断フレームワークからのメッセージDEBUG デバッグメッセージ(Debug=ONの場合)INFO 通常の処理を通知するために使用する低レベルの情報メッセージNOTICE 重要度の高いINFOメッセージ ○WARNING問題のあるオペレーションまたはコンフィグレーションがあったが、通常のオペレーションに支障は生じない○ERRORユーザ エラーが発生したことを示す。システムまたはアプリケーションでは、割り込みやサービスの限定的な低下を起こすことなくエラーに対処できる○CRITICALシステム エラーまたはサービス エラーが発生したことを示す。システムを回復できるが、サービスの一時的な損失や永久的な低下が発生する場合がある○ALERTシステムの特定のサービスだけが使用不能の状態にある。自動回復を実行できない。この問題を解決するには管理者がすぐに措置を講じる必要がある○EMARGENCYサーバが使用不能な状態にある。この重大度は、重大なシステム障害または問題があることを示す○NOTICE以上のメッセージはデフォルトでドメインログに転送される
  12. 12. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.12Tips: Message IDの確認方法WebLogic Server Error Message Reference
  13. 13. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.13トラブル発生時に集めるべき情報は? GC … JVMによる使用済みメモリ領域を回収する機構– GCは高コストな処理 スローダウンやハングの原因になる場合もある メモリ管理方式はJVM実装によって異なるGCログOld spaceEdenNew spaceSurvivorSurvivorPerm Old spaceNursery[HotSpot] [JRockit]
  14. 14. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.14Tips: GCログオプション説明 HotSpot JRockitGCログ -verbose:gc -verbose:gcGCログ(詳細) -XX:+printGCDetails-Xverbose:gcreport-Xverbose:gcpauseGCのタイムスタンプ出力 -XX:+printGCTimestamps(サーバー起動からの経過時間)-XverbosetimestampGCログをファイル出力 -Xloggc:<file_name> -Xverboselog:<file_name>[gcpause][Tue May 21 10:42:45 2013][04868] [YC#25] [---] 26.105 ms (1236.973000-1236.999000) YC[gcpause][Tue May 21 10:42:45 2013][04868] [YC#25] [con] 0.002 ms (1236.973000-1236.973000) YC:PreGC[gcpause][Tue May 21 10:42:45 2013][04868] [YC#25] [pau] 26.062 ms (1236.973000-1236.999000) YC:Main[gcpause][Tue May 21 10:42:45 2013][04868] [YC#25] [con] 0.008 ms (1236.999000-1236.999000) YC:PostGC[gcpause][Tue May 21 10:42:45 2013][04868] [OC#1] [---] 45.613 ms (1236.999000-1237.045000) OC[gcpause][Tue May 21 10:42:45 2013][04868] [OC#1] [con] 0.004 ms (1236.999000-1236.999000) OC:PreGC[gcpause][Tue May 21 10:42:45 2013][04868] [OC#1] [pau] 44.730 ms (1236.999000-1237.044000) OC:Main[gcpause][Tue May 21 10:42:45 2013][04868] [OC#1] [con] 0.810 ms (1237.044000-1237.045000) OC:PostGC
  15. 15. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.15トラブル発生時に集めるべき情報は? スレッドダンプとは– JVMで実行中のスレッドのスナップショット スレッドがどんな処理を実行しているのか?– JVMの標準機能 WebLogic Serverの障害解析以外でも活用可能 標準出力(/標準エラー出力)に出力されるJavaスレッドダンプスレッドダンプはシステムに負荷をかけずに情報収集できる最良のツールスレッドダンプ取得時は一定間隔で複数回取得
  16. 16. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.16スレッドダンプの取得方法 OS– CTRL + BREAK / wlsvc -dump -svcname:service-name (Windows)– Kill -3 <pid> (Linux/UNIX) WLST– ThreadDump() JVM– jstack <pid> (HotSpot)– jrcmd <pid> print_thread (JRockit)Tips: Javaプロセスのpidは jps コマンドで確認(HotSpot/Jrockitどちらでも使用可能)
  17. 17. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.17スレッドダンプの取得例JRockitの場合複数のサーバーを起動している場合は–lv オプションでクラスの完全名と起動オプションを表示してpidを識別ファイルへのリダイレクトは追記(>>)の方が便利
  18. 18. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.18スレッドダンプ出力例JRockitのスレッドダンプ"[ACTIVE] ExecuteThread: 4 for queue: weblogic.kernel.Default (self-tuning)" id=55 idx=0xc8 tid=7484 prio=2alive, waiting, native_blocked, daemon-- Waiting for notification on: weblogic/work/ExecuteThread@0x0000000007F5DC78[fat lock]at jrockit/vm/Threads.waitForNotifySignal(JLjava/lang/Object;)Z(Native Method)at java/lang/Object.wait(J)V(Native Method) at java/lang/Object.wait(Object.java:485)at weblogic/work/ExecuteThread.waitForRequest(ExecuteThread.java:205)^-- Lock released while waiting: weblogic/work/ExecuteThread@0x0000000007F5DC78[fat lock]at weblogic/work/ExecuteThread.run(ExecuteThread.java:226)at jrockit/vm/RNI.c2java(JJJJJ)V(Native Method)-- end of trace"[ACTIVE] ExecuteThread: 21 for queue: weblogic.kernel.Default (self-tuning)" id=73 idx=0x110 tid=9956 prio=2alive, native_blocked, daemonat dummy/web/Dummy1Servlet.doGet(Dummy1Servlet.java:38)[optimized]at javax/servlet/http/HttpServlet.service(HttpServlet.java:731)[optimized]at javax/servlet/http/HttpServlet.service(HttpServlet.java:844)[optimized]… (途中略) …at weblogic/work/ExecuteThread.execute(ExecuteThread.java:256)[optimized]at weblogic/work/ExecuteThread.run(ExecuteThread.java:221)at jrockit/vm/RNI.c2java(JJJJJ)V(Native Method)-- end of traceアイドルスレッド実行中のスレッドTips: スレッドダンプの解析はツールを活用侍 , Thread Dump Analyzer
  19. 19. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.19トラブル発生時に集めるべき情報は? WLDF診断イメージキャプチャはWebLogic Serverの状態を単一のアーティファクトとして出力– コンフィグレーション、ログ情報、ワークマネージャ、サブシステム(JMS,JDBC, EJB, JNDI)のイメージやJVM情報(ヒープ状態、スレッドダンプ)など トラブル原因の解明に必要な情報をまとめて取得可能– 手動もしくはルールに基づいた自動キャプチャが可能WLDF診断イメージキャプチャ
  20. 20. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.20診断イメージキャプチャに含まれるもの必要なものはすべて含まれるイメージキャプチャの出力先:<DOMAIN>/servers/<server_name>/logs/diagnostic_images
  21. 21. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.21診断イメージキャプチャの取得方法管理コンソールを使った取得次のイメージキャプチャが取得できるまでのロックアウト時間
  22. 22. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.22Tips: WebLogic Server診断フレームワークWebLogic Server全体を監視、診断するための機能監視データを生成する仕組み構成情報や解析に必要な情報を統合的に取得する仕組み監視対象の設定と通知の仕組み監視データを取得する仕組み監視データを画面表示する仕組みインスツルメンテーションデータパブリッシャデータプロバイダ(MBean)イメージキャプチャデータをファイルとして出力する仕組みアーカイバロガーハーベスタ監視と通知アクセサ
  23. 23. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.23障害時に集めるべき情報は? スレッドダンプやGCログはトラブル解決に有益だが…– トラブルが発生した瞬間に取得できるわけではない– 必要な情報が得られない場合もある JRockit Flight Recorder– トラブル解決に必要な情報を常時記録可能 (=本番環境でも低負荷)– JVMからアプリケーション(+WLS)まで幅広い情報を記録必要なときに情報が得られるか?トラブルの確実な原因を 「遡って」 追跡可能にトラブルの発生から改善までのサイクルと手間を大きく短縮に
  24. 24. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.24JRockit Flight Recorder全ては記録されるWebLogic Server / JRockitJRockitMission ControlWLDFイベント イベントDisk File古いデータWLSTApplication ApplicationWebLogic JVMRuntimejrcmdダンプ解析ダンプ依頼ダンプ依頼ダンプルールに基づくダンプトリガーダンプ依頼イベント診断イメージキャプチャダンプ依頼Thread BufferGlobal Buffer新しいデータ あふれたら移動あふれたら移動Rotating BufferFlight Recorder RuntimeFlightRecorder.jfr
  25. 25. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.25WebLogic ServerとFlight Recorderの連携 WebLogic ServerはFlight Recorderとの連携可能– サーバーで発生したイベントをFlight Recorderに送信– WLDF診断イメージキャプチャにFlight Recorder記録を含めるWLDF FlightRecorderイベントイメージキャプチャ
  26. 26. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.26Flight Recorderで記録できる情報各GCフェーズの詳細情報やヒープの増加傾向情報Servlet/JSP毎、EJB毎等の主要コンポーネントの呼び出しイベント等各スレッド毎に発生したイベントを記録(1イベントあたり50~150byte程度)
  27. 27. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.27WebLogic Server イベントの取得サーバーの診断ボリュームを設定デフォルトの診断ボリュームは低(Low)
  28. 28. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.28Flight Recorder記録の開始 JRockitの起動オプション– -XX:FlightRecorderOptions=disk=true -XX:StartFlightRecording=filename=<出力ファイル名>,settings=<テンプレートファイル名>,maxage=<ディスク上に保持する期間> jrcmdコマンド– jrcmd <jrockit_pid> start_flight_recording settings=<テンプレートファイル名> JRockit Mission Control– JVMブラウザ → フライト記録の開始…→テンプレート選択3つの記録方法
  29. 29. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.29Flight Recorder記録の開始Mission ControlFlight記録のテンプレート(組み込み)•通常のプロファイリング標準的なプロファイリング・イベント。低レベルのイベントやリソース消費が大きい一部のイベントは除外。オーバヘッドは低い。•ロックを含むプロファイリング通常のプロファイリング・テンプレートに低レベルのロック・イベントが含む。オーバーヘッドは大きい。•例外を含むプロファイリング通常のプロファイリング・テンプレートにスタック・トレースを伴う例外イベントを含む。オーバーヘッドは通常よりも大きい。•リアル・タイムガベージ・コレクション情報などメモリー関連の情報に重点を置く。オーバーヘッドは考慮不要。
  30. 30. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.30Flight Recorder記録Mission Controlでの表示 [全般/コード]
  31. 31. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.31Flight Recorder記録Mission Controlでの表示 [CPU/スレッド数]
  32. 32. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.32WebLogic ServerイベントMission Controlでのイベント表示
  33. 33. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.33WebLogic ServerイベントWebLogic タブTips: Flight Recorder PluginのWebLogic Tab Packを使用するとWebLogic Serverイベントをリソース別にタブ表示可能(未サポート)
  34. 34. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.34WebLogic Serverイベントスレッドごとに発生したイベントを可視化
  35. 35. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.35JRockit Mission Controlその他の機能: コンソール
  36. 36. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.36JRockit Mission Controlその他の機能: MemoryLeak Detector傾向分析 タイプの関係
  37. 37. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.37まとめ WebLogic Serverが提供する様々な情報を活用する– ログ情報– JVMのスレッドダンプ– 診断イメージキャプチャ– Flight Recorder記録トラブル発生時に情報を集めるには?様々な情報を活用してトラブル解決に役立てましょう
  38. 38. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.38まとめ利点 考慮事項ログ サーバーで発生するイベントを時系列で取得可能。トラブル発生時の初期情報の収集に最適。サーバログ … サーバのアクティビティGCログ … GCの発生頻度HTTPログ … ユーザリクエスト情報が各ログファイルに分散しているため一元的に情報を把握しにくい・EMを使用すると横串検索可能Javaスレッドダンプ JVMで行われているスレッド処理のスナップショットを取得。低負荷のため本番環境でも取得可能。スレッドダンプはテキスト情報のため必要に応じてデータ加工の必要あり・侍など各種ツールを活用WLDFイメージキャプチャ サーバーの設定、モニタ情報、ログ、スレッドダンプをまとめて取得可能。WLDFモジュールを設定すればルールに基づいて自動的にイメージキャプチャを取得可能。イメージキャプチャ取得時のオーバーヘッドとディスクサイズを考慮する必要あり自動キャプチャにはWLDFモジュールを構成する必要があるFlight Recorder JVM+WebLogic Serverで発生するイベント詳細レベルで取得。低負荷のため本番環境でも取得可能。Mission Controlを使用してGUIベースで解析可能。常時Flight 記録を取得する場合はディスクサイズを考慮する必要ありJFRはWebLogic Enterprise Edition 以上情報収集ツールの比較
  39. 39. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.39オラクルユニバーシティからのお知らせ
  40. 40. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.40Oracle Universityからのお知らせ WebLogic Serverの管理方法を体系的に学習したい方に最適な研修コースをご提供しています。– Classroomトレーニングだけでなく、Live Virtual Classや『Oracle トレーニング・オンデマンド』など多様な受講形態から選択いただけます。
  41. 41. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.41コース内容■Oracle Fusion Middleware の概要■Oracle WebLogic Serverのインストール■WebLogic Server ドメインのコンフィグレーション■アプリケーションのデプロイ■JMS アプリケーションのコンフィグレーション■Oracle HTTP Server のコンフィグレーション■バックアップおよびリカバリの管理■WebLogic Serverのアーキテクチャ■管理コンソールおよび他の管理ツールの概要■Oracle WebLogic Server の管理およびロギングの使用■データソース、JDBCドライバ、接続プールの設定■WebLogic Serverの基本セキュリティのコンフィグレーション■Oracle WebLogic クラスタのコンフィグレーション■全体バックアップ、増分バックアップ受講前提条件・Linux の基本コマンドおよびデスクトップのナビゲーション・クライアント/サーバーの概念における TCP/IP ネットワークに関する基本的な知識・Java EE の基礎知識(サーブレットや JSP など) ※推奨対象者 ・Oracle WebLogic Server 11g/12c管理者 ・Javaアプリケーション開発者コース日程5日間日程の詳細は Oracle University Webサイト にてご確認ください。受講料 定価¥363,825(税込) ※Oracle PartnerNetwork会員様は、パートナー割引価格で受講いただけます。Oracle Application Gridの基盤を支えるOracle WebLogic Server 11gの管理コース!このコースでは、Web管理者がOracle WebLogic Server 11gのインストールおよび設定する方法について説明します。Web管理者が管理コンソールやコマンドライン、およびスクリプトツール(WLST)などを使用して、Java EEアプリケーションをOracle WebLogic Server 11gにデプロイする方法についても説明します。その他に、Oracle WebLogic Server のWebインタフェースとしてOracle HTTP Serverを設定する方法を解説し、またOracle WebLogic Serverクラスタを設定してアプリケーションのフェイルオーバーとロードバランシングをサポートする方法を学習します。また、WebLogic Server管理者の管理タスクの概要について説明します。Oracle WebLogic Server 11g: 管理ミドルウェア※ Oracleトレーニング・オンデマンドでのご受講をオススメします!!※ WLS12cとの差分は参考資料を配布します
  42. 42. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.42Oracle WebLogic Server 11g: 管理コースを90日間いつでも何度でも。新時代のラーニングソリューション•インターネット経由でお好きな時間にお好きな場所で• 実際の講義をそのまま収録してストリーミング配信•教室と同じ演習環境を5日間使用可能•担当講師による Q&A•eKit(電子媒体テキスト)付きOracle トレーニング・オンデマンドとは?
  43. 43. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.43WebLogic Server勉強会 参加者の皆さまの特典http://education.oracle.co.jp/campaign_wlstudy/
  44. 44. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.44
  45. 45. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.4545

×