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

スレッド ダンプの生成

このページの内容

お困りですか?

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

コミュニティに質問

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

tip/resting Created with Sketch.

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

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

このページの内容:

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

Performance Data Collector は、パフォーマンス データを収集するために多数の REST API を表示する、サーバー側のスタンドアロン アプリケーションです。このアプリケーションを使用して、スレッド ダンプ、ディスク速度、CPU 使用率情報などのデータを収集して、パフォーマンスの問題をトラブルシューティングできます。

詳細は、「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 月 18 日

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

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