SlideShare a Scribd company logo
1 of 9
HeapStats で GlassFish4 障害解析
KUBOTA Yuji (@sugarlife)
1
GlassFish Users Group Japan 勉強会 2013 #1
2013.06.14
自己紹介
● KUBOTA Yuji (@sugarlife)
– 難聴者
– ボルダリング
– http://cco.hatenablog.jp/
● 某通信インフラ系
– Java (OpenJDK) / トラブルシューター
– IcedTea Community Committer (HeapStats)
– 過去に Java EE 検証も
2
GlassFish4の監視
● 楽に監視できる仕組みを揃えている。
– CLI / REST / JMX access / Web Console
– 詳しくは 50 Tips in 50 Mins for GlassFish Fans.
● しかし、学習コストはなるべく下げたい
– 監視と解析のそれぞれで学習コストがかかる
– GlassFishとJVMで監視/解析する項目を切り分ける
● GlassFish:セッション状況、アクティブなJSPページ数...
● JVM:GCログ、ヒープダンプ、コアダンプ...
3
HeapStats
4
解析
5
HeapStatsの特徴
● 低オーバヘッド
– GCと完全に同期して情報収集するため、5%以下(※)の低
オーバーヘッドで常時収集。
● リアルタイム検知
– Deadlock / OutOfMemoryError をリアルタイムで検知し、
SNMP等で外部通知が可能。
● 一元的な解析
– クラス別のメモリ使用率からサーバリソースまで、収集し
た情報をGUIで時系列に解析可能。
● OSS
※:SPECjvm2008のComposite resultによる測定
• http://icedtea.classpath.org/wiki/HeapStats
HeapStatsで収集できる情報
6
 通常時
 Java ヒープ関連
 クラスヒストグラム
 GC
 発生時間
 原因
 処理時間
 世代別のJavaヒープ使用量
 Javaランタイム関連
 ネイティブメモリ使用率(RSS/VSZ)
 ライブスレッド数
 モニタ(ロック)競合回数
 完全停止(Stop-The-World)時間
 CPU使用率
 Javaプロセス内部の内訳(usr/sys)
 システム全体の使用率
 異常時 ( OutOfMemoryError / Deadlock )
 障害発生日時
 スレッドダンプ
 各種バージョン
 Java / JVM
 Kernel / libc / distribution
 Java関連情報
 JVM名
 クラスパス
 JAVA_HOME
 起動引数 / 起動フラグ(-XX系)
 実行中のJavaプログラム名と引数
 実行時間 (障害発生までの間隔)
 プロセス情報
 ステータス (procfs - status)
 ネイティブメモリ (procfs - smaps)
 リソース制限 (procfs - limits)
 ソケットエンドポイント (netstat)
 syslog (/var/log/messages)
 stdout/stderr (存在すれば)
 GCログ (存在すれば)
異常時はこの情報に加えて右の情報を取得
Demonstration
7
● GlassFish Open Source Edition 4.0
– go https://glassfish.java.net/download.html
– unzip glassfish*.zip;
mv glassfish4 /path/to/glassfish/
● HeapStats 1.0.0
– go http://icedtea.wildebeest.org/download/heapstats/
– rpm –ivh heapstats_agent-1.0.0-0*rpm
– tar zxvf heapstats-1.0.0.tar.gz; cd heapstats*;
java –jar heapstats.jar
HeapStats Project
● HeapStats @ IcedTea
– http://icedtea.classpath.org/wiki/HeapStats
● ML
– http://icedtea.classpath.org/mailman/listinfo/heapstats
8
Question?
(参考)オーバヘッドは?
9
アタッチなし アタッチあり

More Related Content

More from Yuji Kubota

More from Yuji Kubota (20)

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)
 
Head toward Java 15 and Java 16
Head toward Java 15 and Java 16Head toward Java 15 and Java 16
Head toward Java 15 and Java 16
 
Head toward Java 14 and Java 15 #LINE_DM
Head toward Java 14 and Java 15 #LINE_DMHead toward Java 14 and Java 15 #LINE_DM
Head toward Java 14 and Java 15 #LINE_DM
 
Head toward Java 14 and Java 15
Head toward Java 14 and Java 15Head toward Java 14 and Java 15
Head toward Java 14 and Java 15
 
オンライン会議と音声認識
オンライン会議と音声認識オンライン会議と音声認識
オンライン会議と音声認識
 
Head toward Java 13 and Java 14 #jjug
Head toward Java 13 and Java 14 #jjugHead toward Java 13 and Java 14 #jjug
Head toward Java 13 and Java 14 #jjug
 
Catch up Java 12 and Java 13
Catch up Java 12 and Java 13Catch up Java 12 and Java 13
Catch up Java 12 and Java 13
 
Migration Guide from Java 8 to Java 11 #jjug
Migration Guide from Java 8 to Java 11 #jjugMigration Guide from Java 8 to Java 11 #jjug
Migration Guide from Java 8 to Java 11 #jjug
 
Introduction to Java 11: Support and JVM Features #jjug
Introduction to Java 11: Support and JVM Features #jjugIntroduction to Java 11: Support and JVM Features #jjug
Introduction to Java 11: Support and JVM Features #jjug
 
Java 10でぼくたちの生活はどう変わるの?
Java 10でぼくたちの生活はどう変わるの?Java 10でぼくたちの生活はどう変わるの?
Java 10でぼくたちの生活はどう変わるの?
 
Project Jigsaw #kanjava
Project Jigsaw #kanjavaProject Jigsaw #kanjava
Project Jigsaw #kanjava
 
Java 9 and Future #jjug
Java 9 and Future #jjugJava 9 and Future #jjug
Java 9 and Future #jjug
 
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
 
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM Logging
 
Prepare for Java 9 #jjug
Prepare for Java 9 #jjugPrepare for Java 9 #jjug
Prepare for Java 9 #jjug
 
jcmd #javacasual
jcmd #javacasualjcmd #javacasual
jcmd #javacasual
 
JavaOne 2016 Java SE Feedback #jjug #j1jp
JavaOne 2016 Java SE Feedback #jjug #j1jpJavaOne 2016 Java SE Feedback #jjug #j1jp
JavaOne 2016 Java SE Feedback #jjug #j1jp
 
OpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjugOpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjug
 
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
 
JavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpJavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jp
 

HeapStats で GlassFish 4 障害解析 #glassfishjp

  • 1. HeapStats で GlassFish4 障害解析 KUBOTA Yuji (@sugarlife) 1 GlassFish Users Group Japan 勉強会 2013 #1 2013.06.14
  • 2. 自己紹介 ● KUBOTA Yuji (@sugarlife) – 難聴者 – ボルダリング – http://cco.hatenablog.jp/ ● 某通信インフラ系 – Java (OpenJDK) / トラブルシューター – IcedTea Community Committer (HeapStats) – 過去に Java EE 検証も 2
  • 3. GlassFish4の監視 ● 楽に監視できる仕組みを揃えている。 – CLI / REST / JMX access / Web Console – 詳しくは 50 Tips in 50 Mins for GlassFish Fans. ● しかし、学習コストはなるべく下げたい – 監視と解析のそれぞれで学習コストがかかる – GlassFishとJVMで監視/解析する項目を切り分ける ● GlassFish:セッション状況、アクティブなJSPページ数... ● JVM:GCログ、ヒープダンプ、コアダンプ... 3
  • 5. 5 HeapStatsの特徴 ● 低オーバヘッド – GCと完全に同期して情報収集するため、5%以下(※)の低 オーバーヘッドで常時収集。 ● リアルタイム検知 – Deadlock / OutOfMemoryError をリアルタイムで検知し、 SNMP等で外部通知が可能。 ● 一元的な解析 – クラス別のメモリ使用率からサーバリソースまで、収集し た情報をGUIで時系列に解析可能。 ● OSS ※:SPECjvm2008のComposite resultによる測定 • http://icedtea.classpath.org/wiki/HeapStats
  • 6. HeapStatsで収集できる情報 6  通常時  Java ヒープ関連  クラスヒストグラム  GC  発生時間  原因  処理時間  世代別のJavaヒープ使用量  Javaランタイム関連  ネイティブメモリ使用率(RSS/VSZ)  ライブスレッド数  モニタ(ロック)競合回数  完全停止(Stop-The-World)時間  CPU使用率  Javaプロセス内部の内訳(usr/sys)  システム全体の使用率  異常時 ( OutOfMemoryError / Deadlock )  障害発生日時  スレッドダンプ  各種バージョン  Java / JVM  Kernel / libc / distribution  Java関連情報  JVM名  クラスパス  JAVA_HOME  起動引数 / 起動フラグ(-XX系)  実行中のJavaプログラム名と引数  実行時間 (障害発生までの間隔)  プロセス情報  ステータス (procfs - status)  ネイティブメモリ (procfs - smaps)  リソース制限 (procfs - limits)  ソケットエンドポイント (netstat)  syslog (/var/log/messages)  stdout/stderr (存在すれば)  GCログ (存在すれば) 異常時はこの情報に加えて右の情報を取得
  • 7. Demonstration 7 ● GlassFish Open Source Edition 4.0 – go https://glassfish.java.net/download.html – unzip glassfish*.zip; mv glassfish4 /path/to/glassfish/ ● HeapStats 1.0.0 – go http://icedtea.wildebeest.org/download/heapstats/ – rpm –ivh heapstats_agent-1.0.0-0*rpm – tar zxvf heapstats-1.0.0.tar.gz; cd heapstats*; java –jar heapstats.jar
  • 8. HeapStats Project ● HeapStats @ IcedTea – http://icedtea.classpath.org/wiki/HeapStats ● ML – http://icedtea.classpath.org/mailman/listinfo/heapstats 8 Question?