Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Java トラブル解析支援ツール HeapStats のご紹介

8,683 views

Published on

Introduction of HeapStats.
(In Jpanese only)

  • Be the first to comment

Java トラブル解析支援ツール HeapStats のご紹介

  1. 1. Java トラブル解析支援ツール HeapStats のご紹介 2014.06.14 ShinyaTAKEBAYASHI
  2. 2. Open Source Conference 2014 Hokkaido 自己紹介  竹林 信哉(+ShinyaTAKEBAYASHI)  昨晩ガラナを飲んで眠れなくなったひと  仕事  社内の Java 駆け込み寺  トラブル解析支援,技術支援  Java 仮想マシン,Linux カーネル, ネットワークパケットなどの解析  趣味  モノづくり(ソフトウェア(C/C++/x86ASM)電子工作)  ロードバイク  その他  Linux よりWindows,Windows より BSD
  3. 3. Open Source Conference 2014 Hokkaido こんなことありませんか? 商用機でトラブルが 発生しまして・・・ !! いつまでの解決を・・ はい,なるはやで.
  4. 4. Open Source Conference 2014 Hokkaido こんなことありませんか? はいどうぞ △△と××のログを ください これじゃないです はいどうぞ 時刻違いますが? いや実はトラブったときの ログが残っていなくて. 再現します? 環境貸してもらえます? 再現するかわかりません. 環境もお客様と調整しないと. このパラメタ仕込んでください. 再現したらログを送ってください. でも時間かかる性能も 下がるでは困ります. 今すぐだと,不完全な情報から 推測した結果しか出せません. あ,でもお客様に説明する 資料つくらないといけないんで 手伝ってください! ダメです. ちゃんとした解析結果ください!
  5. 5. Open Source Conference 2014 Hokkaido HeapStats とは  オープンソースの Java 故障解析支援ツール  Out Of Memory Error でアプリケーションが落ちた!  デッドロックを起こしてアプリケーションが止まった!  想像以上にメモリを消費している・・・. こんな時に ・システム全体の状態 ・Java アプリケーションのメモリ使用状況 ・メモリ使用量の推移 自動的に情報を収集し, 解析を支援するツール
  6. 6. Open Source Conference 2014 Hokkaido 利用シーン
  7. 7. Open Source Conference 2014 Hokkaido 利用シーン 開発中 • 長期安定試験の前にメモリリークを発見できる • Java のヒープ領域サイズ,GC のチューニングや, アプリケーションのオブジェクトライフサイクルの確認できる 商用運転中 • 定期的に情報を収集し,不穏な動きがないかをチェックできる 故障発生時 • AP 停止時に監視ツールに通知できる • 解析に必要な情報を自動収集できる • システムの復旧を最優先に実施できる
  8. 8. Open Source Conference 2014 Hokkaido 故障発生から解決までの時間を短縮します ユーザ申告など により故障発生 を感知 サーバ再起動な どでとりあえず 復旧 情報収集のため 検証環境で再現 原因解析実施 AP 修正など HeapStats 未導入 1. 故障発生 2. 復旧 3. 解析 4. 解決 監視センタにて 即座に故障発生 を感知 解析に必要な情報 を自動的に収集 サーバを復旧し サービス再開 収集された情報 をもとに解析に も並行して着手 AP 修正など HeapStats 導入後 本格対処完了までの時間を 短縮できる! 自動で情報収集 1. 故障発生 2. 復旧 3. 再現検証 4. 解析 5. 解決
  9. 9. Open Source Conference 2014 Hokkaido HeapStats を使うと,こうなります はいどうぞ ○○をください ××を実施して,とりあえず 業務を回復してください. OK! 原因は AP の不具合の可能性大. クラス△△のあたりの実装を 見なおしてみてください. メモリ使いすぎです. おおっ,そうでしたか. 見なおしてみます! 作り込みがイケてませんでした. 直してから再発していません!
  10. 10. Open Source Conference 2014 Hokkaido もっと HeapStats
  11. 11. Open Source Conference 2014 Hokkaido HeapStats の構成  Agent と Analyzer で構成 ① Agent・・・・ サーバにインストールし,各種情報を収集する. ② Analyzer ・・Agent が収集した情報を可視化する. Agent Analyzer Log / Snapshot Storage or Network ① Agent で収集して ② Analyzer で解析する
  12. 12. Open Source Conference 2014 Hokkaido HeapStats Agent  サーバに常駐し,情報を収集しアラートを出力する  ヒープ統計情報,デッドロック情報,CPU/メモリ使用率を 統合的に収集  Out Of Memory Error,デッドロック発生時,Java ヒープメモリが閾 値を超過した際に,SNMPTrap を送出する機能もある Application JBoss /Tomcat / etc.. OpenJDK / Oracle JDK Linux (x86 / x86_64) Application Application Server JavaVM OS JavaVM に常駐 ・定期的な情報収集 ・故障発生時の通知 SNMP TRAP
  13. 13. Open Source Conference 2014 Hokkaido HeapStatsAgent 収集する情報(通常時) Java ヒープ関連 クラスヒストグラム クラス名 インスタンス数 総サイズ 参照関係 GC 発生日時 発生原因 処理時間 世代別の Java ヒープ使用量 Permanent/Metaspace 使用量 クラスローダ情報 Java ランタイム情報 ネイティブメモリ使用量(RSS/VSZ) ライブスレッド数 モニタ(ロック)競合回数 完全停止(STW)時間 CPU 使用率 Java プロセス内部での内訳 システム全体での使用率
  14. 14. Open Source Conference 2014 Hokkaido HeapStatsAgent 収集する情報(異常時) 一般的な情報 故障発生日時 故障内容 スレッドダンプ 各種バージョン Java JVM OS カーネル OS ディストリビューション libc Java 関連情報 JVM 名 クラスパス Java ホームディレクトリ JVM 起動引数(フラグ等) 実行中の Java プログラム名と引数 実行時間(故障発生までの間隔) プロセス情報 プロセスステータス (proc/[PID]/status) ネイティブメモリ情報 (/proc/[PID]/smaps) リソース制限 (/proc/[PID]/limits) ソケットエンドポイント (netstat 相当) ログ類 syslog 標準出力/標準エラー出力 GC ログ
  15. 15. Open Source Conference 2014 Hokkaido HeapStatsAgent 性能への影響は・・・? 測定環境: DELL PowerEdge R810 Red Hat Enterprise Linux 6.3 x86_64 java-1.7.0-openjdk-1.7.0.51-2.4.4.1.el6_5 JVM オプション -Xmn768m -Xms4500m -Xmx4500m -XX:MaxTenuringThreshold=15 -XX:+UseConcMarkSweepGC -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=80 -XX:+CMSClassUnloadingEnabled  HeapStats の導入による性能への影響は,ほとんどない 259.19 255.38 0 50 100 150 200 250 300 HeapStats なし 1.1.1 SPECjvm2008 Composite Result
  16. 16. Open Source Conference 2014 Hokkaido HeapStats Analyzer  Agent が蓄積したログなどを解析するツール  メモリの情報をグラフィカルに表示・分析 ヒープ使用量の経過 任意の時点でのクラスごとのメモリ使用量 参照オブジェクトツリー(1.1 以降)
  17. 17. Open Source Conference 2014 Hokkaido 動作環境 Agent Analyzer CPU アーキテクチャ x86 または x86_64※1 不問 OS Linux※2 不問 【動作確認済み】 Red Hat Enterprise Linux 6 CentOS 6 Fedora 20 【動作確認済み】 左記に加えて Windows 7/8/8.1 Windows Server 2008/2012 OS X 10.9 Mavericks Java バージョン OpenJDK 6+ Oracle Java 6+ OpenJDK 7+ Oracle Java 7+ GUI 不要 必要 ※1 SSE4 または AVX に対応している CPU では,より低負荷での動作が可能 ※2 Red Hat Enterprise Linux,CentOS,Fedora 用 RPM パッケージ配布中 商用機とは別の場所・環境で,解析作業を実施できる!
  18. 18. Open Source Conference 2014 Hokkaido インストール方法  ダウンロード!  http://icedtea.classpath.org/wiki/HeapStats/jp  Agent のインストールは,とても簡単  Red Hat Enterprise Linux / Fedora の場合は,RPM ファイルで インストール  AP サーバ等の起動スクリプトの,Java 起動オプションに 「-agentlib:heapstats」を追加する  Analyzer は,ほぼゼロインストール  zip ファイルを展開,外部ライブラリ※を入れて jar ファイルを 起動する ※ 別途 JGraphX,JFreeChart,JCommon が必要 % java -agentlib:heapstats Test % java -jar heapstats.jar
  19. 19. Open Source Conference 2014 Hokkaido Demonstration
  20. 20. Open Source Conference 2014 Hokkaido まとめ  HeapStats は,Java アプリケーションの メモリ問題に起因する故障解析を支援するツールです.  解析に必要な情報を常にもれなく取得しているため, 故障の再現検証が不要になる可能性を高めます.  性能への影響は,ほぼありません.  故障発生時の現場担当者の負担を軽減できます.  事実に基づいた正確な分析を,迅速に実施できます.  使用にあたり費用は発生しません.
  21. 21. Open Source Conference 2014 Hokkaido ユーザ申告など により故障発生 を感知 サーバ再起動な どでとりあえず 復旧 情報収集のため 検証環境で再現 原因解析実施 AP 修正など HeapStats 未導入 1. 故障発生 2. 復旧 3. 解析 4. 解決 監視センタにて 即座に故障発生 を感知 解析に必要な情報 を自動的に収集 サーバを復旧し サービス再開 収集された情報 をもとに解析に も並行して着手 AP 修正など HeapStats 導入後 本格対処完了までの時間を 短縮できる! 自動で情報収集 1. 故障発生 2. 復旧 3. 再現検証 4. 解析 5. 解決 こんなに良いことが
  22. 22. Open Source Conference 2014 Hokkaido こんなに良いことが(Cont’d) はいどうぞ ○○をください ××を実施して,とりあえず 業務を回復してください. OK! 原因は AP の不具合の可能性大. クラス△△のあたりの実装を 見なおしてみてください. メモリ使いすぎです. おおっ,そうでしたか. 見なおしてみます! 作り込みがイケてませんでした. 直してから再発していません!
  23. 23. Open Source Conference 2014 Hokkaido 是非お試しください!
  24. 24. Open Source Conference 2014 Hokkaido HeapStats FX Analyzer  Analyzer Java FX 版を開発中
  25. 25. Open Source Conference 2014 Hokkaido リンク集  HeapStats Wiki  http://icedtea.classpath.org/wiki/HeapStats/jp  HeapStats Mailing List  http://icedtea.classpath.org/mailman/listinfo/heapstats  HeapStats FX Analyzer  https://github.com/YaSuenag/HeapStatsFXAnalyzer
  26. 26. Open Source Conference 2014 Hokkaido ご清聴ありがとうございました Oracle と Java は,Oracle Corporation 及びその子会社,関連会社の米国及びその他の国における登録商標です. その他文中の社名,商品名等は各社の商標または登録商標である場合があります.

×