AmazonLinuxにJavaスレッドダンプ取得ツールをインストールして取得できるようにする
スレッドダンプとは
スレッドダンプとは何なのでしょうか。スレッドのダンプ…JavaのスレッドはJavaを実行する際の実行単位というか、処理の流れの1つのこと。
それのダンプ…ダンプとはあるOSやプログラムのその時の状況を丸ごと取得してファイルなどに出力したもの。
なのでスレッドダンプとはJavaプログラムのある時点での処理状況をダンプとして取得したものになります。
スレッドダンプについては下記などがとても参考になりますのでご参照ください。
(参考)
- » 「うわっ…私のアプリ、遅すぎ…?」 スレッドダンプでJavaアプリケーションのボトルネックを調査しよう TECHSCORE BLOG http://www.techscore.com/blog/2016/02/05/%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E3%83%80%E3%83%B3%E3%83%97%E3%81%A7%E3%83%9C%E3%83%88%E3%83%AB%E3%83%8D%E3%83%83%E3%82%AF%E3%82%92%E8%AA%BF%E6%9F%BB%E3%81%97%E3%82%88%E3%81%86/
- あなたとスレッドダンプ - スレッドダンプ入門 - この国では犬が http://enk.hatenablog.com/entry/2014/09/22/001303
スレッドダンプツールについて
jstackというツールがあり、これを利用してスレッドダンプを取得するのが一般的なようです。どこの記事を読んでも出てきますし、下記のAdobeの技術記事(2017年10月更新)でも利用されているのでjstackを利用しておけば間違いありません。
(参考)
- JVM からのスレッドダンプの取得 https://helpx.adobe.com/jp/experience-manager/kb/TakeThreadDump.html
インストール方法
普通はJavaを実行しているマシンにはだいたいjstackがインストールされているようなのですが、私が運用しているサーバには入っていなかったので入れてみました。既存のJDKのインストール状況確認
$ rpm -qa | grep jdk
java-1.7.0-openjdk-1.7.0.161-2.6.12.0.75.amzn1.x86_64
openjdk-debuginfo をインストール
sudo yum --enablerepo='*-debug*' install java-1.7.0-openjdk-debuginfo.x86_64
openjdk-devel をインストール(jstackはこれに入っている)
sudo yum install java-1.7.0-openjdk-devel.x86_64
これでインストールは完了です。
スレッドダンプを取得
取得方法はとても簡単でした。以下のように実行してファイルへリダイレクトするだけです。
jstack -l 10655 > threaddump.txt
複数取得したい場合は以下のように日時分秒などでファイルが分かれるようにすれば問題なさそうです。
jstack -l 10655 > threaddump-`date "+%Y-%m-%d-%H-%M-%S"`.txt
コメント
コメントを投稿