SlideShare a Scribd company logo
OpenJDK
とらしゅー
KUBOTA Yuji
@sugarlife
Java Casual Talk #1
@sugarlife
•  某グループで OpenJDK サポート
– コアダンプ等の JVM 障害解析、(レ
アケースな) GC チューニングとか
– たまにパッチ書いて闇に消投稿
•  解析支援ツール HeapStats 開発
– 低オーバーヘッド命
– あっちこっちで元気に稼働中 :)
今日のお題
• カジュアルなトラシュー(を夢
見て色々あった)話
JDK9 を聞きたい人
4
http://www.slideshare.net/YujiKubota/jdk9-jjug
もしくは月末にある JavaOne2015 の報告会があるかも?
8月時点の新機能概要は以下 :p
OpenJDK 事例を聞きたい人
5
http://oss.nttdata.co.jp/hadoop/event/201510/
index.html
よく受けるトラブル
•  プロセスダウン
1. クラッシュ(コアダンプ)、無言でダウン
2. メモリ不足 (OutOfMemoryError等)
•  プロセス無反応、スローダウン
3. GC 長時間化 (JVM 起因の性能問題)
4. デッドロック、ループ
•  アプリエラー出力
5. スタックトレース
よくある困ったパターン
7
• ログがない
• 手作業ミスで(ログが)消し飛んだ
• サービス環境で重い処理(≒ログ
収集・解析) が禁止されている
• 個人情報関係で重要ログが来ない
いいから
8
• ログがない
• 手作業ミスで(ログが)消し飛んだ
• サービス環境で重い処理(≒ログ
収集・解析) が禁止されている
• 個人情報関係で重要ログが来ない
ログを取れ
よく受けるトラブル
•  プロセスダウン
1. クラッシュ(コアダンプ)、無言でダウン
2. メモリ不足 (OutOfMemoryError等)
•  プロセス無反応、スローダウン
3. GC 長時間化 (JVM 起因の性能問題)
4. デッドロック、ループ
•  アプリエラー出力
5. スタックトレース
ケース1. クラッシュ
10


ケース1. クラッシュ
•  必要なログ
– コアダンプ (core.<pid>)
•  ulimit –c unlimited で吐けるようにする
– エラーレポート(hs_err_pid<pid>.log)
•  -XX:ErrorFile=/path/to/hs_err_pid%p.log
•  カジュアルトラシュー
– レポートの Stack: 項目のトレースを読む
– 祈りながら JDK Bug System で検索
– 2-3 割ぐらいは当たる (※個人的な体感)
– 不発時はコアダンプと一緒にサポートへ
11


ケース2. メモリ不足
12


	
Exception in thread "TP-Processor9" java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOfRange(Arrays.java:3221)
at java.lang.String.<init>(String.java:233)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at java.lang.Thread.run(Thread.java:619)
java.lang.OutOfMemoryError: <message>
message: 10 種類以上ある
http://www.slideshare.net/YujiKubota/javalangoutofmemoryerror-java
ケース2. メモリ不足
•  必要なログ (パターン1)
– ヒープダンプ
•  jmap –dump:format=b,file=/path/to/file <pid>
– <pid> を /path/to/bin/java <core> にするとコアダ
ンプからも取れる
•  OOME 時に自動収集 (ヒープダンプとコア)
– -XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/path/to/
-XX:OnOutOfMemoryError=`/bin/kill –ABRT %p`
•  カジュアルトラシュー
– ヒープダンプを Eclipse Memory Analyzer に
放り込んで被疑オブジェクトを絞り込む
13


ケース2. メモリ不足
•  必要なログ (パターン1)
– ヒープダンプ
•  jmap –dump:format=b,file=/path/to/file <pid>
– <pid> を /path/to/bin/java <core> にするとコアダ
ンプからも取れる
•  OOME 時に自動収集 (ヒープダンプとコア)
– -XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/path/to/
-XX:OnOutOfMemoryError=`/bin/kill –ABRT %p`
•  カジュアルトラシュー
– ヒープダンプを Eclipse Memory Analyzer に
放り込んで被疑オブジェクトを絞り込む
14


脇道
•  Java Agent という機能がある
– バイトコードを動的に操作可能な、プロ
ファイリング/デバッグのテクニック
•  JVM TI という JVM のインターフェース
– JVM レベルで操作・把握可能
– コールバックを任意に設定可能
– プロファイラツールにはこれを利用した実
装もある
– ヒープにいるオブジェクト状況を継続的に
把握可能なツールも作れるのでは???
15


作れた(ケース2. メモリ不足)
•  必要なログ (パターン2)
– HeapStats
• -agentlib:heapstats
– rpm インストールが必要
» wget http://goo.gl/AfgA2x
» rpm –ivh heapstats_agent-*.x86_64rpm
– heapstats_snapshot.dat を回収
•  カジュアルトラシュー
– HeapStats Analyzer に放り込む
16


	
http://icedtea.classpath.org/wiki/HeapStats
一目で解れば正義
17


	
[B
byte[]
誰が参照してるかも取れる
18


	
[B
byte[]
参照関係にあるオブジェ
クトで一番インスタンス
数が多いオブジェクト共
ケース3. GC 長時間化
19


	
1085.695: [CMS-concurrent-sweep-start]
1086.736: [GC1086.736: [ParNew (promotion failed): 911243K-
>907358K(943744K), 0.1784670 secs] 3833880K->3894624K(4810368K),
0.2084860 secs] [Times: user=0.26 sys=0.00, real=0.20 secs]
GC locker: Trying a full collection because scavenge failed
1087.214: [Full GC1087.215: [CMS1103.749: [CMS-concurrent-sweep:
13.564/13.754 secs] [Times: user=15.84 sys=0.25, real=13.75 secs]
(concurrent mode failure): 2987266K->358385K(3866624K), 16.8898790 secs]
3894624K->358385K(4810368K), [CMS Perm : 129322K-
>129315K(262144K)], 20.8900340 secs] [Times: user=20.84 sys=0.00,
real=20.89 secs]
ケース3. GC 長時間化
•  必要なログ
– GCログ
•  -Xloggc:/path/to/gc_%t_pid%p.log
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
•  カジュアルトラシュー
– 基本戦略は GC ログを読んで時間が懸って
るフェーズやエラーに対して処置する
– 15分じゃ語り足りないので資料
•  CMS: http://goo.gl/9WyL33 (JJUG CCC 2014 Fall)
•  G1GC: JJUG CCC 2015 Fall 発表予定 20


ケース3. GC 長時間化
•  必要なログ
– GCログ
•  -Xloggc:/path/to/gc_%t_pid%p.log
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
•  カジュアルトラシュー
– 基本戦略は GC ログを読んで時間が懸って
るフェーズやエラーに対して処置する
– 15分じゃ語り足りないので資料
•  CMS: http://goo.gl/9WyL33 (JJUG CCC 2014 Fall)
•  G1GC: JJUG CCC 2015 Fall 発表予定 21


ケース4. デッドロック, ループ
22


	
•  スレッドダンプ取って調べる
– @yusuke さんのターン
ケース5. スタックトレース
23


	
• Exception 握り潰した犯人を
火にくべる
• 全然関係ない(ように見える)
Exception に入れ替えて投げ
た犯人を火にくべる
• 英語読め

More Related Content

What's hot (20)

PDF
JVMのGCアルゴリズムとチューニング
佑哉 廣岡
 
PDF
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
Yoshiro Tokumasu
 
PDF
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Yuji Kubota
 
PDF
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
 
PDF
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
 
PDF
ネットワークOS野郎 ~ インフラ野郎Night 20160414
Kentaro Ebisawa
 
PPTX
java.lang.OutOfMemoryError #渋谷java
Yuji Kubota
 
PDF
O/Rマッパーによるトラブルを未然に防ぐ
kwatch
 
PDF
大規模負荷試験時にやったこと
まべ☆てっく運営
 
PPTX
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
 
PDF
Javaのログ出力: 道具と考え方
Taku Miyakawa
 
PDF
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
NTT DATA Technology & Innovation
 
PDF
こわくない Git
Kota Saito
 
PDF
TLS, HTTP/2演習
shigeki_ohtsu
 
PDF
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
Takahiro YAMADA
 
PPTX
Metaspace
Yasumasa Suenaga
 
PDF
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
Koichiro Matsuoka
 
PDF
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
NTT DATA Technology & Innovation
 
PDF
C/C++プログラマのための開発ツール
MITSUNARI Shigeo
 
PDF
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
NTT DATA Technology & Innovation
 
JVMのGCアルゴリズムとチューニング
佑哉 廣岡
 
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
Yoshiro Tokumasu
 
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Yuji Kubota
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
Kentaro Ebisawa
 
java.lang.OutOfMemoryError #渋谷java
Yuji Kubota
 
O/Rマッパーによるトラブルを未然に防ぐ
kwatch
 
大規模負荷試験時にやったこと
まべ☆てっく運営
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
 
Javaのログ出力: 道具と考え方
Taku Miyakawa
 
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
NTT DATA Technology & Innovation
 
こわくない Git
Kota Saito
 
TLS, HTTP/2演習
shigeki_ohtsu
 
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
Takahiro YAMADA
 
Metaspace
Yasumasa Suenaga
 
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
Koichiro Matsuoka
 
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
NTT DATA Technology & Innovation
 
C/C++プログラマのための開発ツール
MITSUNARI Shigeo
 
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
NTT DATA Technology & Innovation
 

Similar to OpenJDK トラブルシューティング #javacasual (20)

PDF
楽して JVM を学びたい #jjug
Yuji Kubota
 
PDF
これからのJDK/JVM 何を選ぶ?どう選ぶ?
Takahiro YAMADA
 
PDF
OpenJDK コミュニティに参加してみよう #jjug
Yuji Kubota
 
PDF
java-ja TDD 2nd
Takuto Wada
 
PDF
JJUG初心者のためのJava/JJUG講座
Yusuke Suzuki
 
PPTX
Introduction to GraalVM and Native Image
Koichi Sakata
 
PPTX
OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajo
Takahiro YAMADA
 
PPT
2012年javaメモリリーク
torutk
 
PDF
HeapStats @ Seasar Conference 2015 LT
Yuji Kubota
 
PDF
第2回 -Play部屋- Play 2.0はじめて&もくもく会
Kazuhiro Hara
 
PPTX
Java をクラッシュさせて遊んでみよう!
YujiSoftware
 
PPTX
Xcode10での テスト周りの進化をふりかえる
Toshiyuki Hirata
 
PPTX
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Koichi Sakata
 
PDF
VMの歩む道。 Dalvik、ART、そしてJava VM
yy yank
 
PDF
Javaとコミュニティの歩み 2020
Yusuke Suzuki
 
PDF
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
Takahiro YAMADA
 
PDF
JavaのテストGroovyでいいのではないかという話
disc99_
 
PPTX
Javaはどれだけ速いのか
YujiSoftware
 
PDF
JDKの選択肢とサーバーサイドでの選び方
Takahiro YAMADA
 
PDF
Scalaでのプログラム開発
Kota Mizushima
 
楽して JVM を学びたい #jjug
Yuji Kubota
 
これからのJDK/JVM 何を選ぶ?どう選ぶ?
Takahiro YAMADA
 
OpenJDK コミュニティに参加してみよう #jjug
Yuji Kubota
 
java-ja TDD 2nd
Takuto Wada
 
JJUG初心者のためのJava/JJUG講座
Yusuke Suzuki
 
Introduction to GraalVM and Native Image
Koichi Sakata
 
OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajo
Takahiro YAMADA
 
2012年javaメモリリーク
torutk
 
HeapStats @ Seasar Conference 2015 LT
Yuji Kubota
 
第2回 -Play部屋- Play 2.0はじめて&もくもく会
Kazuhiro Hara
 
Java をクラッシュさせて遊んでみよう!
YujiSoftware
 
Xcode10での テスト周りの進化をふりかえる
Toshiyuki Hirata
 
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Koichi Sakata
 
VMの歩む道。 Dalvik、ART、そしてJava VM
yy yank
 
Javaとコミュニティの歩み 2020
Yusuke Suzuki
 
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
Takahiro YAMADA
 
JavaのテストGroovyでいいのではないかという話
disc99_
 
Javaはどれだけ速いのか
YujiSoftware
 
JDKの選択肢とサーバーサイドでの選び方
Takahiro YAMADA
 
Scalaでのプログラム開発
Kota Mizushima
 
Ad

More from Yuji Kubota (20)

PDF
Head toward Java 16 (Night Seminar Edition)
Yuji Kubota
 
PDF
Head toward Java 15 and Java 16
Yuji Kubota
 
PDF
Head toward Java 14 and Java 15 #LINE_DM
Yuji Kubota
 
PDF
Head toward Java 14 and Java 15
Yuji Kubota
 
PDF
オンライン会議と音声認識
Yuji Kubota
 
PDF
Head toward Java 13 and Java 14 #jjug
Yuji Kubota
 
PDF
Catch up Java 12 and Java 13
Yuji Kubota
 
PDF
Migration Guide from Java 8 to Java 11 #jjug
Yuji Kubota
 
PDF
Introduction to Java 11: Support and JVM Features #jjug
Yuji Kubota
 
PDF
Java 10でぼくたちの生活はどう変わるの?
Yuji Kubota
 
PPTX
Project Jigsaw #kanjava
Yuji Kubota
 
PPTX
Java 9 and Future #jjug
Yuji Kubota
 
PPTX
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
Yuji Kubota
 
PDF
Prepare for Java 9 #jjug
Yuji Kubota
 
PDF
jcmd #javacasual
Yuji Kubota
 
PDF
JavaOne 2016 Java SE Feedback #jjug #j1jp
Yuji Kubota
 
PDF
JavaOne 2015 JDK Update (Jigsaw) #j1jp
Yuji Kubota
 
PDF
JDK9 新機能 (日本語&ショートバージョン) #jjug
Yuji Kubota
 
PDF
JDK9 Features (Summary, 31/Jul/2015) #JJUG
Yuji Kubota
 
PDF
HeapStats: Introduction and Technical Preview
Yuji Kubota
 
Head toward Java 16 (Night Seminar Edition)
Yuji Kubota
 
Head toward Java 15 and Java 16
Yuji Kubota
 
Head toward Java 14 and Java 15 #LINE_DM
Yuji Kubota
 
Head toward Java 14 and Java 15
Yuji Kubota
 
オンライン会議と音声認識
Yuji Kubota
 
Head toward Java 13 and Java 14 #jjug
Yuji Kubota
 
Catch up Java 12 and Java 13
Yuji Kubota
 
Migration Guide from Java 8 to Java 11 #jjug
Yuji Kubota
 
Introduction to Java 11: Support and JVM Features #jjug
Yuji Kubota
 
Java 10でぼくたちの生活はどう変わるの?
Yuji Kubota
 
Project Jigsaw #kanjava
Yuji Kubota
 
Java 9 and Future #jjug
Yuji Kubota
 
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
Yuji Kubota
 
Prepare for Java 9 #jjug
Yuji Kubota
 
jcmd #javacasual
Yuji Kubota
 
JavaOne 2016 Java SE Feedback #jjug #j1jp
Yuji Kubota
 
JavaOne 2015 JDK Update (Jigsaw) #j1jp
Yuji Kubota
 
JDK9 新機能 (日本語&ショートバージョン) #jjug
Yuji Kubota
 
JDK9 Features (Summary, 31/Jul/2015) #JJUG
Yuji Kubota
 
HeapStats: Introduction and Technical Preview
Yuji Kubota
 
Ad

Recently uploaded (10)

PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
PDF
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
PDF
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
 
PDF
ABC2025S LT講演「世界の窓から Androidこんにちは2025」アプリ自動生成の将来?ロボティクスの夢再び?
嶋 是一 (Yoshikazu SHIMA)
 
PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
PDF
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
 
ABC2025S LT講演「世界の窓から Androidこんにちは2025」アプリ自動生成の将来?ロボティクスの夢再び?
嶋 是一 (Yoshikazu SHIMA)
 
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 

OpenJDK トラブルシューティング #javacasual