java トラブル解析支援ツール heapstats のご紹介

26
Java トトトトトトトトトトト HeapStats トトトト 2014.06.14 Shinya TAKEBAYASHI

Upload: shinya-takebayashi

Post on 25-Jun-2015

3.234 views

Category:

Presentations & Public Speaking


3 download

DESCRIPTION

Introduction of HeapStats. (In Jpanese only)

TRANSCRIPT

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

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

2014.06.14

Shinya TAKEBAYASHI

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

Open Source Conference 2014 Hokkaido

自己紹介 竹林 信哉 (+Shinya TAKEBAYASHI)

昨晩ガラナを飲んで眠れなくなったひと

仕事 社内の Java 駆け込み寺

トラブル解析支援,技術支援

Java 仮想マシン, Linux カーネル,ネットワークパケットなどの解析

趣味 モノづくり(ソフトウェア( C/C++/x86ASM )電子工作)

ロードバイク

その他 Linux より Windows , Windows より BSD

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

Open Source Conference 2014 Hokkaido

こんなことありませんか?

商用機でトラブルが発生しまして・・・

!!

いつまでの解決を・・

はい,なるはやで.

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

Open Source Conference 2014 Hokkaido

こんなことありませんか?

はいどうぞ

△△ と ×× のログをください

これじゃないです

はいどうぞ

時刻違いますが?

いや実はトラブったときのログが残っていなくて.

再現します?環境貸してもらえます?

再現するかわかりません.環境もお客様と調整しない

と.

このパラメタ仕込んでください.再現したらログを送ってください.

でも時間かかる性能も下がるでは困ります.

今すぐだと,不完全な情報から推測した結果しか出せません.

あ,でもお客様に説明する資料つくらないといけないん

で手伝ってください!

ダメです.ちゃんとした解析結果ください!

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

Open Source Conference 2014 Hokkaido

HeapStats とは オープンソースの Java 故障解析支援ツール

Out Of Memory Error でアプリケーションが落ちた!

デッドロックを起こしてアプリケーションが止まった!

想像以上にメモリを消費している・・・.

こんな時に

・システム全体の状態・ Java アプリケーションのメモリ使用状況・メモリ使用量の推移

自動的に情報を収集し,解析を支援するツール

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

Open Source Conference 2014 Hokkaido

利用シーン

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

Open Source Conference 2014 Hokkaido

利用シーン

開発中

• 長期安定試験の前にメモリリークを発見できる• Java のヒープ領域サイズ, GC のチューニングや,

アプリケーションのオブジェクトライフサイクルの確認できる

商用運転中• 定期的に情報を収集し,不穏な動きがないかをチェックできる

故障発生時

• AP 停止時に監視ツールに通知できる• 解析に必要な情報を自動収集できる• システムの復旧を最優先に実施できる

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

Open Source Conference 2014 Hokkaido

故障発生から解決までの時間を短縮します

ユーザ申告などにより故障発生を感知

サーバ再起動などでとりあえず復旧

情報収集のため検証環境で再現 原因解析実施 AP 修正など

HeapStats 未導入

1. 故障発生 2. 復旧

3. 解析4. 解決

監視センタにて即座に故障発生を感知解析に必要な情報を自動的に収集

サーバを復旧しサービス再開

収集された情報をもとに解析にも並行して着手

AP 修正など

HeapStats 導入後

本格対処完了までの時間を短縮できる!

自動で情報収集

1. 故障発生 2. 復旧 3. 再現検証 4. 解析 5. 解決

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

Open Source Conference 2014 Hokkaido

HeapStats を使うと,こうなります

はいどうぞ

○○をください

×× を実施して,とりあえず業務を回復してください.

OK !

原因は AP の不具合の可能性大.クラス△△のあたりの実装を見なおしてみてください.

メモリ使いすぎです.

おおっ,そうでしたか.見なおしてみます!

作り込みがイケてませんでした.直してから再発していません!

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

Open Source Conference 2014 Hokkaido

もっと HeapStats

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

Open Source Conference 2014 Hokkaido

HeapStats の構成 Agent と Analyzer で構成

① Agent ・・・・ サーバにインストールし,各種情報を収集する.

② Analyzer ・・ Agent が収集した情報を可視化する.

Agent Analyzer

Log / Snapshot

Storage or Network

① Agent で収集して ② Analyzer で解析する

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

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

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

Open Source Conference 2014 Hokkaido

HeapStats Agent

収集する情報(通常時)

Java ヒープ関連

クラスヒストグラム

クラス名

インスタンス数

総サイズ

参照関係

GC

発生日時

発生原因

処理時間

世代別の Java ヒープ使用量

Permanent/Metaspace 使用量

クラスローダ情報

Java ランタイム情報

ネイティブメモリ使用量( RSS/VSZ )

ライブスレッド数

モニタ(ロック)競合回数

完全停止( STW )時間

CPU 使用率Java プロセス内部での内訳

システム全体での使用率

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

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 ログ

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

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

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

Open Source Conference 2014 Hokkaido

HeapStats Analyzer Agent が蓄積したログなどを解析するツール

メモリの情報をグラフィカルに表示・分析

ヒープ使用量の経過 任意の時点でのクラスごとのメモリ使用量

参照オブジェクトツリー( 1.1 以降)

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

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 パッケージ配布中

商用機とは別の場所・環境で,解析作業を実施できる!

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

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

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

Open Source Conference 2014 Hokkaido

Demonstration

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

Open Source Conference 2014 Hokkaido

まとめ HeapStats は, Java アプリケーションの

メモリ問題に起因する故障解析を支援するツールです.

解析に必要な情報を常にもれなく取得しているため,

故障の再現検証が不要になる可能性を高めます. 性能への影響は,ほぼありません. 故障発生時の現場担当者の負担を軽減できます. 事実に基づいた正確な分析を,迅速に実施できます. 使用にあたり費用は発生しません.

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

Open Source Conference 2014 Hokkaido

ユーザ申告などにより故障発生を感知

サーバ再起動などでとりあえず復旧

情報収集のため検証環境で再現 原因解析実施 AP 修正など

HeapStats 未導入

1. 故障発生 2. 復旧

3. 解析4. 解決

監視センタにて即座に故障発生を感知解析に必要な情報を自動的に収集

サーバを復旧しサービス再開

収集された情報をもとに解析にも並行して着手

AP 修正など

HeapStats 導入後

本格対処完了までの時間を短縮できる!

自動で情報収集

1. 故障発生 2. 復旧 3. 再現検証 4. 解析 5. 解決

こんなに良いことが

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

Open Source Conference 2014 Hokkaido

こんなに良いことが( Cont’d )

はいどうぞ

○○をください

×× を実施して,とりあえず業務を回復してください.

OK !

原因は AP の不具合の可能性大.クラス△△のあたりの実装を見なおしてみてください.

メモリ使いすぎです.

おおっ,そうでしたか.見なおしてみます!

作り込みがイケてませんでした.直してから再発していません!

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

Open Source Conference 2014 Hokkaido

是非お試しください!

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

Open Source Conference 2014 Hokkaido

HeapStats FX Analyzer

Analyzer Java FX 版を開発中

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

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

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

Open Source Conference 2014 Hokkaido

ご清聴ありがとうございました

Oracle と Java は, Oracle Corporation 及びその子会社,関連会社の米国及びその他の国における登録商標です.その他文中の社名,商品名等は各社の商標または登録商標である場合があります.