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