狠狠撸

狠狠撸Share a Scribd company logo
Java トラブル解析支援ツール
HeapStats のご紹介
2014.06.14
ShinyaTAKEBAYASHI
Open Source Conference 2014 Hokkaido
自己紹介
? 竹林 信哉(+ShinyaTAKEBAYASHI)
? 昨晩ガラナを飲んで眠れなくなったひと
? 仕事
? 社内の 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 ヒープメモリが閾
値を超過した際に,SNMPTrap を送出する機能もある
Application
JBoss /Tomcat / etc..
OpenJDK / Oracle JDK
Linux (x86 / x86_64)
Application
Application
Server
JavaVM
OS
JavaVM に常駐
?定期的な情報収集
?故障発生時の通知
SNMP TRAP
Open Source Conference 2014 Hokkaido
HeapStatsAgent
収集する情報(通常時)
Java ヒープ関連
クラスヒストグラム
クラス名
インスタンス数
総サイズ
参照関係
GC
発生日時
発生原因
処理時間
世代別の Java ヒープ使用量
Permanent/Metaspace 使用量
クラスローダ情報
Java ランタイム情報
ネイティブメモリ使用量(RSS/VSZ)
ライブスレッド数
モニタ(ロック)競合回数
完全停止(STW)時間
CPU 使用率
Java プロセス内部での内訳
システム全体での使用率
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 ログ
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
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 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 パッケージ配布中
商用機とは別の場所?環境で,解析作業を実施できる!
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 及びその子会社,関連会社の米国及びその他の国における登録商標です.
その他文中の社名,商品名等は各社の商標または登録商標である場合があります.

More Related Content

What's hot (20)

闯补惫补9新机能概要
闯补惫补9新机能概要闯补惫补9新机能概要
闯补惫补9新机能概要
HonMarkHunt
?
闯补惫补はどのように动くのか~スライドでわかる闯痴惭の仕组み
闯补惫补はどのように动くのか~スライドでわかる闯痴惭の仕组み闯补惫补はどのように动くのか~スライドでわかる闯痴惭の仕组み
闯补惫补はどのように动くのか~スライドでわかる闯痴惭の仕组み
Chihiro Ito
?
HeapStatsのデモ (Java The Night)
HeapStatsのデモ (Java The Night)HeapStatsのデモ (Java The Night)
HeapStatsのデモ (Java The Night)
Yasumasa Suenaga
?
jcmd をさわってみよう
jcmd をさわってみようjcmd をさわってみよう
jcmd をさわってみよう
Tsunenaga Hanyuda
?
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM Logging
Yuji Kubota
?
笔补苍补尘补を先取り!? 闯痴惭颁滨で闯滨罢と游ぶ
笔补苍补尘补を先取り!? 闯痴惭颁滨で闯滨罢と游ぶ笔补苍补尘补を先取り!? 闯痴惭颁滨で闯滨罢と游ぶ
笔补苍补尘补を先取り!? 闯痴惭颁滨で闯滨罢と游ぶ
Yasumasa Suenaga
?
10の闯补惫补9で変わる闯补惫补8の嫌なとこ!
10の闯补惫补9で変わる闯补惫补8の嫌なとこ!10の闯补惫补9で変わる闯补惫补8の嫌なとこ!
10の闯补惫补9で変わる闯补惫补8の嫌なとこ!
bitter_fox
?
スレッドダンプの読み方
スレッドダンプの読み方スレッドダンプの読み方
スレッドダンプの読み方
Funato Takashi
?
OpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasualOpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasual
Yuji Kubota
?
Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)
Yuji Kubota
?
楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug
Yuji Kubota
?
颁笔鲍から见た骋1骋颁
颁笔鲍から见た骋1骋颁颁笔鲍から见た骋1骋颁
颁笔鲍から见た骋1骋颁
Kenji Kazumura
?
JDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjugJDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjug
Yuji Kubota
?
Tomcatの実装から学ふ?クラスロータ?リーク #渋谷Java
Tomcatの実装から学ふ?クラスロータ?リーク #渋谷JavaTomcatの実装から学ふ?クラスロータ?リーク #渋谷Java
Tomcatの実装から学ふ?クラスロータ?リーク #渋谷Java
Norito Agetsuma
?
JavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpJavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jp
Yuji Kubota
?
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
Concurrent Mark-Sweep Garbage Collection #jjug_cccConcurrent Mark-Sweep Garbage Collection #jjug_ccc
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
Yuji Kubota
?
Introduction to JShell #JavaDayTokyo #jdt_jshell
Introduction to JShell #JavaDayTokyo #jdt_jshellIntroduction to JShell #JavaDayTokyo #jdt_jshell
Introduction to JShell #JavaDayTokyo #jdt_jshell
bitter_fox
?
贬别补辫厂迟补迟蝉(闯补惫补解析ツールバトル)
贬别补辫厂迟补迟蝉(闯补惫补解析ツールバトル)贬别补辫厂迟补迟蝉(闯补惫补解析ツールバトル)
贬别补辫厂迟补迟蝉(闯补惫补解析ツールバトル)
Yasumasa Suenaga
?
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
tamtam180
?
JVM のいろはにほ #javajo
JVM のいろはにほ #javajoJVM のいろはにほ #javajo
JVM のいろはにほ #javajo
Yuji Kubota
?
闯补惫补9新机能概要
闯补惫补9新机能概要闯补惫补9新机能概要
闯补惫补9新机能概要
HonMarkHunt
?
闯补惫补はどのように动くのか~スライドでわかる闯痴惭の仕组み
闯补惫补はどのように动くのか~スライドでわかる闯痴惭の仕组み闯补惫补はどのように动くのか~スライドでわかる闯痴惭の仕组み
闯补惫补はどのように动くのか~スライドでわかる闯痴惭の仕组み
Chihiro Ito
?
HeapStatsのデモ (Java The Night)
HeapStatsのデモ (Java The Night)HeapStatsのデモ (Java The Night)
HeapStatsのデモ (Java The Night)
Yasumasa Suenaga
?
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM Logging
Yuji Kubota
?
笔补苍补尘补を先取り!? 闯痴惭颁滨で闯滨罢と游ぶ
笔补苍补尘补を先取り!? 闯痴惭颁滨で闯滨罢と游ぶ笔补苍补尘补を先取り!? 闯痴惭颁滨で闯滨罢と游ぶ
笔补苍补尘补を先取り!? 闯痴惭颁滨で闯滨罢と游ぶ
Yasumasa Suenaga
?
10の闯补惫补9で変わる闯补惫补8の嫌なとこ!
10の闯补惫补9で変わる闯补惫补8の嫌なとこ!10の闯补惫补9で変わる闯补惫补8の嫌なとこ!
10の闯补惫补9で変わる闯补惫补8の嫌なとこ!
bitter_fox
?
スレッドダンプの読み方
スレッドダンプの読み方スレッドダンプの読み方
スレッドダンプの読み方
Funato Takashi
?
OpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasualOpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasual
Yuji Kubota
?
Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)
Yuji Kubota
?
楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug
Yuji Kubota
?
颁笔鲍から见た骋1骋颁
颁笔鲍から见た骋1骋颁颁笔鲍から见た骋1骋颁
颁笔鲍から见た骋1骋颁
Kenji Kazumura
?
JDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjugJDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjug
Yuji Kubota
?
Tomcatの実装から学ふ?クラスロータ?リーク #渋谷Java
Tomcatの実装から学ふ?クラスロータ?リーク #渋谷JavaTomcatの実装から学ふ?クラスロータ?リーク #渋谷Java
Tomcatの実装から学ふ?クラスロータ?リーク #渋谷Java
Norito Agetsuma
?
JavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpJavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jp
Yuji Kubota
?
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
Concurrent Mark-Sweep Garbage Collection #jjug_cccConcurrent Mark-Sweep Garbage Collection #jjug_ccc
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
Yuji Kubota
?
Introduction to JShell #JavaDayTokyo #jdt_jshell
Introduction to JShell #JavaDayTokyo #jdt_jshellIntroduction to JShell #JavaDayTokyo #jdt_jshell
Introduction to JShell #JavaDayTokyo #jdt_jshell
bitter_fox
?
贬别补辫厂迟补迟蝉(闯补惫补解析ツールバトル)
贬别补辫厂迟补迟蝉(闯补惫补解析ツールバトル)贬别补辫厂迟补迟蝉(闯补惫补解析ツールバトル)
贬别补辫厂迟补迟蝉(闯补惫补解析ツールバトル)
Yasumasa Suenaga
?
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
tamtam180
?
JVM のいろはにほ #javajo
JVM のいろはにほ #javajoJVM のいろはにほ #javajo
JVM のいろはにほ #javajo
Yuji Kubota
?

Viewers also liked (6)

Spring Cloud Netflixを使おう #jsug
Spring Cloud Netflixを使おう #jsugSpring Cloud Netflixを使おう #jsug
Spring Cloud Netflixを使おう #jsug
Toshiaki Maki
?
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
Toshiaki Maki
?
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本
kazuki kumagai
?
形式手法で捗る!インフラ构成の设计と検証
形式手法で捗る!インフラ构成の设计と検証形式手法で捗る!インフラ构成の设计と検証
形式手法で捗る!インフラ构成の设计と検証
y_taka_23
?
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
Toshiaki Maki
?
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
?
Spring Cloud Netflixを使おう #jsug
Spring Cloud Netflixを使おう #jsugSpring Cloud Netflixを使おう #jsug
Spring Cloud Netflixを使おう #jsug
Toshiaki Maki
?
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
Toshiaki Maki
?
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本
kazuki kumagai
?
形式手法で捗る!インフラ构成の设计と検証
形式手法で捗る!インフラ构成の设计と検証形式手法で捗る!インフラ构成の设计と検証
形式手法で捗る!インフラ构成の设计と検証
y_taka_23
?
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
Toshiaki Maki
?
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
?

Similar to Java トラブル解析支援ツール HeapStats のご紹介 (20)

WASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみたWASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみた
MITSUNARI Shigeo
?
2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services
Naoto Gohko
?
叠补尘产辞辞による継続的デリバリー
叠补尘产辞辞による継続的デリバリー叠补尘产辞辞による継続的デリバリー
叠补尘产辞辞による継続的デリバリー
グロースエクスパートナーズ株式会社/Growth xPartners Incorporated.
?
Openstack ceph 20171115 vtj
Openstack ceph 20171115 vtjOpenstack ceph 20171115 vtj
Openstack ceph 20171115 vtj
Takehiro Kudou
?
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
VirtualTech Japan Inc.
?
Nginx
NginxNginx
Nginx
Soichi Takamura
?
闯础惭蝉迟补肠办は眠らない
闯础惭蝉迟补肠办は眠らない闯础惭蝉迟补肠办は眠らない
闯础惭蝉迟补肠办は眠らない
Kuniyoshi Tone
?
[AI05] 目指せ、最先端 AI 技術の実活用!Deep Learning フレームワーク 「Microsoft Cognitive Toolkit 」...
[AI05] 目指せ、最先端 AI 技術の実活用!Deep Learning フレームワーク 「Microsoft Cognitive Toolkit 」...[AI05] 目指せ、最先端 AI 技術の実活用!Deep Learning フレームワーク 「Microsoft Cognitive Toolkit 」...
[AI05] 目指せ、最先端 AI 技術の実活用!Deep Learning フレームワーク 「Microsoft Cognitive Toolkit 」...
de:code 2017
?
大规模ソーシャルゲームを支える技术~笔贬笔+惭测厂蚕尝を使った高负荷対策~
大规模ソーシャルゲームを支える技术~笔贬笔+惭测厂蚕尝を使った高负荷対策~大规模ソーシャルゲームを支える技术~笔贬笔+惭测厂蚕尝を使った高负荷対策~
大规模ソーシャルゲームを支える技术~笔贬笔+惭测厂蚕尝を使った高负荷対策~
infinite_loop
?
TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016
TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016
TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016
RWSJapan
?
翱辫别苍颁痴を础苍诲谤辞颈诲で动かしてみた
翱辫别苍颁痴を础苍诲谤辞颈诲で动かしてみた翱辫别苍颁痴を础苍诲谤辞颈诲で动かしてみた
翱辫别苍颁痴を础苍诲谤辞颈诲で动かしてみた
徹 上野山
?
Introduction of Rancher at OSC Tokyo 17 Spring
Introduction of Rancher at OSC Tokyo 17 SpringIntroduction of Rancher at OSC Tokyo 17 Spring
Introduction of Rancher at OSC Tokyo 17 Spring
Go Chiba
?
高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと
MITSUNARI Shigeo
?
マイクロソフトが考える础滨活用のロードマップ
マイクロソフトが考える础滨活用のロードマップマイクロソフトが考える础滨活用のロードマップ
マイクロソフトが考える础滨活用のロードマップ
Deep Learning Lab(ディープラーニング?ラボ)
?
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
Takamasa Maejima
?
20140828 #ssmjp 社内チューニンガソンで優勝したはなし
20140828 #ssmjp 社内チューニンガソンで優勝したはなし20140828 #ssmjp 社内チューニンガソンで優勝したはなし
20140828 #ssmjp 社内チューニンガソンで優勝したはなし
Masahiro NAKAYAMA
?
アドテク×厂肠补濒补×パフォーマンスチューニング
アドテク×厂肠补濒补×パフォーマンスチューニングアドテク×厂肠补濒补×パフォーマンスチューニング
アドテク×厂肠补濒补×パフォーマンスチューニング
Yosuke Mizutani
?
厂补补厂/クラウドコンピューティングでのオープンソース活用とセキュリティ
厂补补厂/クラウドコンピューティングでのオープンソース活用とセキュリティ厂补补厂/クラウドコンピューティングでのオープンソース活用とセキュリティ
厂补补厂/クラウドコンピューティングでのオープンソース活用とセキュリティ
Kuniyasu Suzaki
?
WASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみたWASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみた
MITSUNARI Shigeo
?
2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services
Naoto Gohko
?
Openstack ceph 20171115 vtj
Openstack ceph 20171115 vtjOpenstack ceph 20171115 vtj
Openstack ceph 20171115 vtj
Takehiro Kudou
?
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
VirtualTech Japan Inc.
?
闯础惭蝉迟补肠办は眠らない
闯础惭蝉迟补肠办は眠らない闯础惭蝉迟补肠办は眠らない
闯础惭蝉迟补肠办は眠らない
Kuniyoshi Tone
?
[AI05] 目指せ、最先端 AI 技術の実活用!Deep Learning フレームワーク 「Microsoft Cognitive Toolkit 」...
[AI05] 目指せ、最先端 AI 技術の実活用!Deep Learning フレームワーク 「Microsoft Cognitive Toolkit 」...[AI05] 目指せ、最先端 AI 技術の実活用!Deep Learning フレームワーク 「Microsoft Cognitive Toolkit 」...
[AI05] 目指せ、最先端 AI 技術の実活用!Deep Learning フレームワーク 「Microsoft Cognitive Toolkit 」...
de:code 2017
?
大规模ソーシャルゲームを支える技术~笔贬笔+惭测厂蚕尝を使った高负荷対策~
大规模ソーシャルゲームを支える技术~笔贬笔+惭测厂蚕尝を使った高负荷対策~大规模ソーシャルゲームを支える技术~笔贬笔+惭测厂蚕尝を使った高负荷対策~
大规模ソーシャルゲームを支える技术~笔贬笔+惭测厂蚕尝を使った高负荷対策~
infinite_loop
?
TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016
TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016
TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016
RWSJapan
?
翱辫别苍颁痴を础苍诲谤辞颈诲で动かしてみた
翱辫别苍颁痴を础苍诲谤辞颈诲で动かしてみた翱辫别苍颁痴を础苍诲谤辞颈诲で动かしてみた
翱辫别苍颁痴を础苍诲谤辞颈诲で动かしてみた
徹 上野山
?
Introduction of Rancher at OSC Tokyo 17 Spring
Introduction of Rancher at OSC Tokyo 17 SpringIntroduction of Rancher at OSC Tokyo 17 Spring
Introduction of Rancher at OSC Tokyo 17 Spring
Go Chiba
?
高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと
MITSUNARI Shigeo
?
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
Takamasa Maejima
?
20140828 #ssmjp 社内チューニンガソンで優勝したはなし
20140828 #ssmjp 社内チューニンガソンで優勝したはなし20140828 #ssmjp 社内チューニンガソンで優勝したはなし
20140828 #ssmjp 社内チューニンガソンで優勝したはなし
Masahiro NAKAYAMA
?
アドテク×厂肠补濒补×パフォーマンスチューニング
アドテク×厂肠补濒补×パフォーマンスチューニングアドテク×厂肠补濒补×パフォーマンスチューニング
アドテク×厂肠补濒补×パフォーマンスチューニング
Yosuke Mizutani
?
厂补补厂/クラウドコンピューティングでのオープンソース活用とセキュリティ
厂补补厂/クラウドコンピューティングでのオープンソース活用とセキュリティ厂补补厂/クラウドコンピューティングでのオープンソース活用とセキュリティ
厂补补厂/クラウドコンピューティングでのオープンソース活用とセキュリティ
Kuniyasu Suzaki
?

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

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

Editor's Notes

  • #6: こんなことになるのが嫌だ,という動機で作り始めたツール. 自動的に必要な情報が手に入ったら皆が不幸にならなくて済むように.
  • #8: 実际に作ってみると,こんなところにも使えるということが分かった.
  • #17: さきほど試験工程でも使えると話したが,アナライザでグラフを出すことができるので,報告書作成にも使える? グラフのデータ間違えたりということもない.
  • #18: 商用でよく使われる Red Hat Linux 用の RPM ファイルがある.インストールとても簡単.
  • #19: Tomcat では catalina.sh などに JAVA_OPTS を設定する場所があるので,そこに書く.