スレッド ダンプの外部での生成

スレッド ダンプの生成

このページの内容

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

Confluence が応答を停止し、Confluence 内でスレッド ダンプを作成できない場合、アプリケーション外でスレッド ダンプを生成できます。外部スレッドは、ロックが保留になっている情報や、スレッドで待機中の情報が必要な場合にも便利です。

tip/resting Created with Sketch.

スレッドダンプを複数取得する

通常、約 10 秒間隔でダンプを取得します。その場合、複数のダンプや出力されたスタックトレースを以下のように1つのファイルに生成することができます。

このページの内容

Performance Data Collector を使用したスレッド ダンプの生成

The Performance Data Collector is a server-side, standalone application that exposes a number of REST APIs for collecting performance data. It can be used to collect data, such as thread dumps, disk speed and CPU usage information, to troubleshoot performance problems.

詳細は、「Performance Data Collector の使用方法」を参照してください。 

Linux でスレッド ダンプを生成する

Linux (または Solaris やその他の Unix) でスレッド ダンプを精製するには:

  1. Confluence を実行している java プロセスを識別します。これは以下の様なコマンドで実現できます。

    ps -ef | grep java.
    
  2. 上記からプロセス ID を使用してスレッド ダンプを生成します。

    kill -3 <pid>

    このコマンドではサーバーは終了しません (スペース間に入れずに "-3" オプションを使用している限り)。

ウィンドウでスレッド ダンプを生成する 

コンソールからスレッド ダンプを生成する

サービスとして Confluence を実行していない場合は、コンソールで直接スレッド ダンプを作成することができます。 

コンソール ウィンドウをクリックし、<CTRL>+BREAK (または一部のキーボードでは SHIFT+CTRL+PAUSE) を押します。スレッド ダンプは、直接コンソールに表示されます。

jstack を使用したスレッド ダンプの生成

JDK (Java 開発キット) には、スレッド ダンプを生成するために使用される jstack が含まれています。  

: Confluence インストーラーにバンドルされている JRE (Java Runtime Environment) には、jstack は含まれません。JDK 一式をインストールしておく必要があります。 

jstack を使用してスレッド ダンプを生成するには:

  1. プロセスを特定します。Ctrl + Shift + Esc‬ キーを押してタスク マネージャーを立ち上げ、Java (Confluence) プロセスの、プロセス ID を検索します (PID 列が表示されない場合は、タスク マネージャの列の見出しを右クリックして PID を選択します)。
  2. ‪‪jstack <pid>‬ を実行して、 単一のスレッドダンプを取得します。このコマンドで、プロセス ID ‪ <pid>‬ の1個のスレッドダンプが取得出来ます。この場合のプロセス ID は22668です。

    adam@track:~$ jstack 22668 > threaddump.txt
    

    このコマンドにより、現在のディレクトリに threaddump.txt というファイルが出力されます。

‪ jstack‬ のよくある問題

  • jstack は Confluence を起動しているユーザーと同じユーザーで起動する必要があります。
  • 実行が可能な jstack が $PATH にない場合、<JDK_HOME>/bin ディレクトリで探します。
  • java.lang.NoClassDefFoundError: sun/tools/jstack/JStack が発生したら、JDK の lib ディレクトリ tools.jar があるかどうかを確認します。tools.jar がない場合、JDK のフル バージョンをダウンロードします。
  • 「このコマンドを実行するのに十分な記憶域がありません」というメッセージが表示された場合はこの記事を参照してください。
  • エラー メッセージ "Not enough storage is available to process this command" が表示された場合、ここから‪ "psexec" ユーティリティをダウンロードして、以下のコマンドを実行します。
    psexec -s jstack <pid> >> threaddumps.txt

出力

スレッド ダンプは、アプリケーション ログ フォルダーの catalina.out ファイル内に表示されます。ログ ファイルで「thread dump」を検索して、ダンプの出発点を探します。 

各ダンプに何が含まれているかを比較し、パフォーマンスの問題の原因となった可能性のある、長期間実行中のスレッドを探すことができるよう、サポートから、短期間、スレッド ダンプのシーケンスを生成するよう求められることがよくあります。

コマンドを繰り返し実行することで複数のスレッド ダンプを手動生成できますが、多くの場合、プロセスを自動化する小さなスクリプトを使用する方が簡単です。お使いの Linux サーバーで実行できるスクリプトの例をいかに示します。

  for i in `seq 1 10` ; do
  echo ${i}
  your/path/to/jstack `ps aux | grep java | grep confluence | grep -v grep | awk '{print $2}'` >> threaddump.log
  sleep 10
done

スレッド ダンプ分析ツール

最終更新日: 2018 年 9 月 16 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.