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

コメント

このブログの人気の投稿

オライリーのDocker本を読んだり色々な記事を読んだりしたので自分なりにまとめる(Dockerfileについて)

一部のユーザだけ NET::ERR_CERT_REVOKED でサイトにアクセスできない

[#CentOS][#Apache] CentOS6 でApacheが起動できない