Upload
yusuke-yamamoto
View
4.494
Download
6
Embed Size (px)
Citation preview
山本 裕介 @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
矢
ノック弦を挟む構造
接ぎ矢をしたときは(運が良いと)ここだけ壊れる
ので好感できる
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
• 区報とかチェックしてください • 初心者向け講習とかあります
アーチェリーやってみたいんだけど
板橋区報より