7

実行中の JBoss インスタンスからスレッド ダンプを生成して分析するにはどうすればよいですか?

4

7 に答える 7

6

もう少し使いやすい JBoss 固有の方法があります。

http://community.jboss.org/wiki/GenerateAThreadDumpWithTheJMXConsole

これは、ホスト マシンに直接アクセスできない場合 ("kill" が必要) に特に便利です。

于 2008-09-12T21:40:41.130 に答える
4

http://java.sun.com/developer/technicalArticles/Programming/Stacktrace/

...

「UNIX プラットフォームでは、kill コマンドを使用してシグナルをプログラムに送信できます。これは、JVM によって処理される終了シグナルです。たとえば、Solaris では、コマンド kill -QUIT process_id を使用できます。ここで、process_id はJava プログラムのプロセス番号。

または、Java プログラムが開始されたウィンドウでキー シーケンス <ctrl>\ を入力することもできます。このシグナルを送信すると、JVM のシグナル ハンドラーに、JVM 内のスレッドとモニターに関するすべての情報を再帰的に出力するように指示されます。」

...

「スレッドの状態の判別

JVM スタック トレースのスナップショットには、さまざまな状態のさまざまなスレッドが表示されます。使用されるキーは次のとおりです。

R 実行中または実行可能なスレッド

S 吊り糸

条件変数を待機している CW スレッド

MW スレッドがモニター ロックを待機中

MS スレッドは、モニター ロックの待機中に中断されました」

于 2008-09-12T19:43:29.803 に答える
1

2 つのオプション:

オプション 1 JMX コンソールを使用してスレッド ダンプを生成する

スレッド ダンプを生成するには:

  1. JMXConsole を開きます (例: http://localhost:8080)
  2. jboss.system:type=ServerInfombeanに移動します (ヒント:おそらくCTRL-Fで、ダイアログ ボックスに type=ServerInfo と入力します)。
  3. サーバー情報 mbean のリンクをクリックします。
  4. それが言うところの一番下に移動しますlistThreadDump
  5. それをクリックして、スレッド ダンプを取得します。

ノート:

Internet Explorer を使用している場合はFile > Save As、データをテキスト エディターにコピーする代わりに、 を使用して出力を保存する必要があります。何らかの理由で、Internet Explorer からテキストをコピーすると、改行がコピーされず、すべての出力が 1 行になってしまいます。

オプション 2 Twiddle を使用してスレッド ダンプを生成する

または、twiddle を使用してlistThreadDump()メソッドを実行し、返された HTML を直接ファイルにパイプすることもできます。次のコマンド ラインを使用します。

<JBOSS_HOME>/bin/twiddle invoke "jboss.system:type=ServerInfo" listThreadDump > threads.html
于 2013-05-21T08:09:18.850 に答える
1

ここにあるスタックトレース アプリも便利です。特に Windows マシンでは、Java アプリがコマンド ラインから起動されていない場合に役立ちます。

于 2008-09-13T02:17:35.067 に答える
1

Thread.getAllStackTraces()(Java 1.5 以降)

于 2012-07-26T21:54:46.580 に答える
0

JBossがロックしすぎて、jmx-concoleでさえ応答しない場合があります。このような場合は、Linuxではkill -3を使用し、WindowsではSendSignalを使用します。

于 2011-04-19T18:19:57.183 に答える
0

https://community.jboss.org/wiki/ThreadDumpJSPページには、JMX なしで使用できるスタンドアロンの自己完結型の threaddump.war があります。

于 2013-05-27T05:36:45.207 に答える