カジュアルにスレッドダンプ
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...
例外スタックトレース
から読めること
例外の種類、例外メッセージ
例外発生に至るコールスタック
(クラス名、行数)
アーチェリー場。意外にも都内に10箇
所以上ある。
どこでアーチェリーやるの?
https://www.google.co.jp...
例外スタックトレース
を読んでみる
Exception in thread "main" java.lang.NullPointerException
at HelloWorld.goodBye(HelloWorld.java:8)
at He...
例外が発生しない場合の
スタックトレース
・正攻法
ブレークポイントを設定してデバッグ
実行
• 筋力、体力、精神力が必要
• 1日144本射つ試合形式もある
• 弓本体は2.5kgくらい
• 最大限引いたところで35∼42ポンド
引っ張って
...
例外が発生しない場合の
スタックトレース
・力技
new Exception().printStackTrace();
(プロセスにアタッチは出来ないけど
再デプロイして状況を再現させられる)
ゴテゴテ付いているの何?
スタビライザー
振動を抑...
デバッガ使いましょうね サイト
http://www.slideshare.net/yusukey/java-print-jjugccc-ccch4
サイト(照準)
照準を見て狙う
距離が遠くなるときは下に、
近くなるときは上に動かして
的の真...
よくあるトラブル
• アプリのパフォーマンスが悪い
• サービスが応答しない
• ボトルネック箇所がわからない
• CPU使用率が異常に高い
• ボランティアでサイバーディフェンス
をしており、パフォーマンスプロファ
イリングツールを購入する予...
スレッドダンプを確認
・スレッドダンプ
現在JVM内で稼働している各スレッド
のスタックトレース。
・アプリケーションの改修不要
・デバッガのアタッチ不要
・本番稼働中も取得可能
• アルミチューブにカーボンを巻いた
構造
• 軽くて丈夫
• ...
スレッドダンプの取得
・スレッドダンプの取得
jstack PID (OS共通)
kill -3 PID (Linux / Unix / Mac)
Ctrl + Break (Windows)
・プロセスIDの確認
$ jps -mlv
$ p...
jpsのオプション
・-m
メインスレッドの引数を表示
・-l (エル)
メインクラスをフルパッケージで表示
・-v
JVMに指定しているオプションを表示
矢
羽
プラスチック製
矢飛びを安定させる
スレッドダンプ 矢
ポイント
いわゆる鏃(やじり)
重心を前に寄せて安定させる
スレッドダンプ
• なにげに毎週どこかしらで大会がある
• いきなり「都大会」に出られる
大会
クイズの答え
スレッドダンプとは
・瞬間のJVMのスナップショット
・
• 一人でも練習できます
• 当たると気持ちいい
アーチェリーのいいとこ
・スナップショット1枚では遊んでいる
のか仕事しているのかわからない
JVMを解析するために
・スレッドダンプを複数回とる
・各スレッドの動きがわかる
・目安: 1秒間隔で3回とか
• 実は接触しない
• 弦を離す際、指により弦の軌道が波打つ
ので矢も上から見ると波打つ
矢の羽は弓に接触する?
http://hr...
スレッドダンプの解析
・3回分のスレッド解析とか無理
・そこで「侍」
• 弦が波打って弓に当たらない現象の
こと
• 波打たないと弓に当たって的中が悪
くなる
• 波打ち過ぎると矢がブレて進むので
やはり的中が悪くなる
アーチェリーパラドックス...
侍のしてくれること
・間隔を空けてスレッドダンプを取得
・スレッドダンプの可視化
→固まっているスレッド
→遊んでいるスレッド
→デッドロックしているスレッド
• たくさんある
• アーチェリーパラドックスの調整に
はプランジャー
チューニング...
侍の起動方法
・ちょっと面倒
$ wget http://samuraism.jp/samurai/samurai-3.0.jar
$ java -cp $JAVA_HOME/lib/tools.jar:samurai-3.0.jar samu...
スレッドダンプ
・普段からカジュアルにとりましょう
・固まったら、応答遅くなったら kill -9
する前に kill -3
• 区報とかチェックしてください
• 初心者向け講習とかあります
アーチェリーやってみたいんだけど
板橋区報より
#
終わりです
Upcoming SlideShare
Loading in...5
×

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

341

Published on

スタックトレースの基本
スレッドダンプの基本
アーチェリーの基本

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
341
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

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

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

×