SlideShare a Scribd company logo
カジュアルにスレッドダンプ
2015年10月16日
山本 裕介 @yusuke
#javacasual
山本 裕介 @yusuke
• アーチャー
• 東京都国体代表2回
• 全日本選手権出場1回
• 都民体育大会 世田谷区代表1回
• 都民体育大会 板橋区代表3回
• 各種大会入賞、優勝多数
山本 裕介 @yusuke
• BEA Systemsにて4年くらいテクニカルサポート
• Fast Searchにて1年半くらいテクニカルサポート
• RedHatにて2年くらいコンサルタント
(火消し多し)
→計7年半くらいトラブルシューティング
クイズです
👻
何をしているでしょう?
答えは後ほど
👻
"
皆さんに質問です
"
日常的にスレッドダンプを解析している方
"
スレッドダンプを取得したことがある方
"
スレッドダンプって聞いたことある方
"
例外スタックトレースを見れば
何が起きているのか大体検討がつく方
スレッドダンプ
よくわからん
スレッドダンプ
チョットデキル
スレッドダンプの話 アーチェリーの話
スタックトレースとは
•プログラムを実行する際のコールス
タックの一覧
•Javaはマルチスレッドで動くので、
スレッド毎にコールスタックがある
• 現在主流は70m
• 形式によっては最短5m、最長で90m
的までの距離
コールスタック
実行結果:
Hello world.
Exception in thread "main" java.lang.NullPointerException
at GoodBye.goodbye(GoodBye.java:4)
at HelloWorld.main(HelloWorld.java:4)
• 中心から10点、9点、7点・・・0点
• 1試合72本、720点満点
採点
例外スタックトレース
から読めること
例外の種類、例外メッセージ
例外発生に至るコールスタック
(クラス名、行数)
アーチェリー場。意外にも都内に10箇
所以上ある。
どこでアーチェリーやるの?
https://www.google.co.jp/maps/search/東京都+アーチェリー/@35.6690751,139.6614889,11.8z より
例外スタックトレース
を読んでみる
Exception in thread "main" java.lang.NullPointerException
at HelloWorld.goodBye(HelloWorld.java:8)
at HelloWorld.main(HelloWorld.java:4)
• ざっと20∼30万
• でも練習は1回300円∼1000円程度
• イニシャルコスト高&ランニングコスト低
道具一式いくら?
HelloWorldの8行目、goodBye内でNPEが発生
HelloWorldの4行目からgoodByeを呼び出している
例外が発生しない場合の
スタックトレース
・正攻法
ブレークポイントを設定してデバッグ
実行
• 筋力、体力、精神力が必要
• 1日144本射つ試合形式もある
• 弓本体は2.5kgくらい
• 最大限引いたところで35∼42ポンド
引っ張って
離すだけでしょ?
例外が発生しない場合の
スタックトレース
・力技
new Exception().printStackTrace();
(プロセスにアタッチは出来ないけど
再デプロイして状況を再現させられる)
ゴテゴテ付いているの何?
スタビライザー
振動を抑止してエイミング、
発射を安定させる
1∼4万円
デバッガ使いましょうね サイト
http://www.slideshare.net/yusukey/java-print-jjugccc-ccch4
サイト(照準)
照準を見て狙う
距離が遠くなるときは下に、
近くなるときは上に動かして
的の真ん中を狙えばいいようにする
2∼2万円
よくあるトラブル
• アプリのパフォーマンスが悪い
• サービスが応答しない
• ボトルネック箇所がわからない
• CPU使用率が異常に高い
• ボランティアでサイバーディフェンス
をしており、パフォーマンスプロファ
イリングツールを購入する予算がな
い
リム
こんな時にスレッドダンプ
リム
しなる部分。木材や、カーボンなどの
合成材
6∼10万円
スレッドダンプを確認
・スレッドダンプ
現在JVM内で稼働している各スレッド
のスタックトレース。
・アプリケーションの改修不要
・デバッガのアタッチ不要
・本番稼働中も取得可能
• アルミチューブにカーボンを巻いた
構造
• 軽くて丈夫
• 一本2千∼6千円
矢
スレッドダンプの取得
・スレッドダンプの取得
jstack PID (OS共通)
kill -3 PID (Linux / Unix / Mac)
Ctrl + Break (Windows)
・プロセスIDの確認
$ jps -mlv
$ ps -ef | grep java
矢
ノック
弦を挟む構造
接ぎ矢をしたときは
(運が良いと)ここだけ壊れる
ので好感できる
jpsのオプション
・-m
メインスレッドの引数を表示
・-l (エル)
メインクラスをフルパッケージで表示
・-v
JVMに指定しているオプションを表示
矢
羽
プラスチック製
矢飛びを安定させる
スレッドダンプ 矢
ポイント
いわゆる鏃(やじり)
重心を前に寄せて安定させる
スレッドダンプ
• なにげに毎週どこかしらで大会がある
• いきなり「都大会」に出られる
大会
クイズの答え
スレッドダンプとは
・瞬間のJVMのスナップショット
・
• 一人でも練習できます
• 当たると気持ちいい
アーチェリーのいいとこ
・スナップショット1枚では遊んでいる
のか仕事しているのかわからない
JVMを解析するために
・スレッドダンプを複数回とる
・各スレッドの動きがわかる
・目安: 1秒間隔で3回とか
• 実は接触しない
• 弦を離す際、指により弦の軌道が波打つ
ので矢も上から見ると波打つ
矢の羽は弓に接触する?
http://hr-inoue.net/zscience/topics/bow/bow.html より
スレッドダンプの解析
・3回分のスレッド解析とか無理
・そこで「侍」
• 弦が波打って弓に当たらない現象の
こと
• 波打たないと弓に当たって的中が悪
くなる
• 波打ち過ぎると矢がブレて進むので
やはり的中が悪くなる
アーチェリーパラドックス
http://samuraism.jp/samurai/ja/index.html
チューニング大事
侍のしてくれること
・間隔を空けてスレッドダンプを取得
・スレッドダンプの可視化
→固まっているスレッド
→遊んでいるスレッド
→デッドロックしているスレッド
• たくさんある
• アーチェリーパラドックスの調整に
はプランジャー
チューニングポイント
http://www.shibuya-online.com/ より
侍の起動方法
・ちょっと面倒
$ wget http://samuraism.jp/samurai/samurai-3.0.jar
$ java -cp $JAVA_HOME/lib/tools.jar:samurai-3.0.jar samurai.swing.Samurai
・.app、.exeとしてパッケージ化予定
• 人口は少ないけど、上には上がいる
ので大変
• でも「ある程度」までは狙いやすい
かも?
簡単にオリンピックとか
出られるんじゃね?
スレッドダンプ
・普段からカジュアルにとりましょう
・固まったら、応答遅くなったら kill -9
する前に kill -3
• 区報とかチェックしてください
• 初心者向け講習とかあります
アーチェリーやってみたいんだけど
板橋区報より
#
終わりです

More Related Content

PDF
「大学院のススメ」dentooLT #15.5
nkawahara
 
PDF
WACATE2018Summer BPP yoshitake
Nobuhiro Yoshitake
 
PDF
OpenJDK トラブルシューティング #javacasual
Yuji Kubota
 
PDF
株式会社サムライズム 新製品発表会 物理イカリングのご紹介 #gbdaitokai
Yusuke Yamamoto
 
PDF
これからはじめるGit、GitHub #stapy
Yusuke Yamamoto
 
PDF
誰も知らない IntelliJ IDEA凄技100選 #kotlin_sansan
Yusuke Yamamoto
 
PDF
JetBrains IDEハンズオン
Yusuke Yamamoto
 
PDF
Java Küche 2016 LT 在室状況自動通知ボット #JavaKueche
Yusuke Yamamoto
 
「大学院のススメ」dentooLT #15.5
nkawahara
 
WACATE2018Summer BPP yoshitake
Nobuhiro Yoshitake
 
OpenJDK トラブルシューティング #javacasual
Yuji Kubota
 
株式会社サムライズム 新製品発表会 物理イカリングのご紹介 #gbdaitokai
Yusuke Yamamoto
 
これからはじめるGit、GitHub #stapy
Yusuke Yamamoto
 
誰も知らない IntelliJ IDEA凄技100選 #kotlin_sansan
Yusuke Yamamoto
 
JetBrains IDEハンズオン
Yusuke Yamamoto
 
Java Küche 2016 LT 在室状況自動通知ボット #JavaKueche
Yusuke Yamamoto
 

More from Yusuke Yamamoto (20)

PDF
Java Küche 2016 #JavaKueche
Yusuke Yamamoto
 
PDF
JavaOne2016 #CON5929 Time-Saving Tips and Tricks for Building Quality Java Ap...
Yusuke Yamamoto
 
PDF
WebStormから始まる快適Web開発ワークフロー #html5jk
Yusuke Yamamoto
 
PDF
データクラスから始めるKotlin / JetBrainsに行ってきました #kotlin_kansai #jkug
Yusuke Yamamoto
 
PDF
Troubleshooting Slowdowns, Freezes, Deadlocks : Introduction to Thread Dump #...
Yusuke Yamamoto
 
PDF
Excel方眼紙アプリケーションサーバと侍の新機能 #jjug
Yusuke Yamamoto
 
PDF
Twitter4jハンズオン 5/1 #twtr_hack
Yusuke Yamamoto
 
PDF
株式会社サムライズム@samuraismがcoincheck for ECを使ってビットコイン決済に対応した話 #gbdaitokai
Yusuke Yamamoto
 
PDF
Botを使った業務効率化 / Java8を使ったBot実装効率化 @yusuke #jjug
Yusuke Yamamoto
 
PDF
Twitter API最新事情 - API Meetup Tokyo #1 #apijp
Yusuke Yamamoto
 
PDF
Java デバッガ活用術 ~勘デバッグ・print デバッグから抜けだそう~ #jjug_ccc #ccc_h4
Yusuke Yamamoto
 
PDF
貧乏人のHeroku活用術 #herokujp
Yusuke Yamamoto
 
PDF
リーンスタートアップ x Java #jjug #jjug_ccc #ccc_h4
Yusuke Yamamoto
 
PDF
JavaScript時代のJava #kansumiB7 #kansumi
Yusuke Yamamoto
 
PDF
テンプレートエンジンの話 #jjug
Yusuke Yamamoto
 
PDF
失敗から学ぶAPI設計 #ccc_h4 #jjug #jjug_ccc JJUG CCC 2013 Spring
Yusuke Yamamoto
 
PDF
HerokuでJava7 #herokujp #waza
Yusuke Yamamoto
 
PDF
2013年3月20日 Tech Compass #tecomp #きのこる
Yusuke Yamamoto
 
PDF
Twitter API1.1 #twtr_hack
Yusuke Yamamoto
 
PDF
Twitter Cards #twtr_hack
Yusuke Yamamoto
 
Java Küche 2016 #JavaKueche
Yusuke Yamamoto
 
JavaOne2016 #CON5929 Time-Saving Tips and Tricks for Building Quality Java Ap...
Yusuke Yamamoto
 
WebStormから始まる快適Web開発ワークフロー #html5jk
Yusuke Yamamoto
 
データクラスから始めるKotlin / JetBrainsに行ってきました #kotlin_kansai #jkug
Yusuke Yamamoto
 
Troubleshooting Slowdowns, Freezes, Deadlocks : Introduction to Thread Dump #...
Yusuke Yamamoto
 
Excel方眼紙アプリケーションサーバと侍の新機能 #jjug
Yusuke Yamamoto
 
Twitter4jハンズオン 5/1 #twtr_hack
Yusuke Yamamoto
 
株式会社サムライズム@samuraismがcoincheck for ECを使ってビットコイン決済に対応した話 #gbdaitokai
Yusuke Yamamoto
 
Botを使った業務効率化 / Java8を使ったBot実装効率化 @yusuke #jjug
Yusuke Yamamoto
 
Twitter API最新事情 - API Meetup Tokyo #1 #apijp
Yusuke Yamamoto
 
Java デバッガ活用術 ~勘デバッグ・print デバッグから抜けだそう~ #jjug_ccc #ccc_h4
Yusuke Yamamoto
 
貧乏人のHeroku活用術 #herokujp
Yusuke Yamamoto
 
リーンスタートアップ x Java #jjug #jjug_ccc #ccc_h4
Yusuke Yamamoto
 
JavaScript時代のJava #kansumiB7 #kansumi
Yusuke Yamamoto
 
テンプレートエンジンの話 #jjug
Yusuke Yamamoto
 
失敗から学ぶAPI設計 #ccc_h4 #jjug #jjug_ccc JJUG CCC 2013 Spring
Yusuke Yamamoto
 
HerokuでJava7 #herokujp #waza
Yusuke Yamamoto
 
2013年3月20日 Tech Compass #tecomp #きのこる
Yusuke Yamamoto
 
Twitter API1.1 #twtr_hack
Yusuke Yamamoto
 
Twitter Cards #twtr_hack
Yusuke Yamamoto
 
Ad

Recently uploaded (11)

PDF
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
PDF
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
PDF
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
Ad

カジュアルにスレッドダンプ - @yusuke #javacasual