問題タブ [thread-dump]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - スレッドダンプ解析ツール / メソッド
Java アプリケーションがハングしている場合、これにつながるユース ケースもわからず、調査したい場合、スレッド ダンプが役立つことは理解しています。
しかし、スレッド ダンプから有用なデータを簡単に取得して、問題の場所を特定するにはどうすればよいでしょうか。私が使用しているサーバー アプリケーションは、非常に長いスレッド ダンプを生成します。これは、EJB アーキテクチャであり、スレッド ダンプには、確認する必要があるかどうかわからないコンテナー スレッド (つまり、アプリケーション コードを実行していないスレッド) が多数含まれているためです。 、しかし JBoss のコード)。
昨日、Thread Dump Analyzerツールを試しました。このツールは、テキスト エディターで生のスレッド ダンプを見るよりもはるかに優れています。興味のないスレッドをフィルターで除外し、スレッド リストを表示し、スレッドをクリックして詳細を表示し、スレッド ダンプを比較して見つけることができるからです。長時間実行スレッドなど
しかし、分析するにはまだデータが多すぎます - ほぼ 300 スレッドです。興味のないすべての JBoss スレッドを除外するために使用できる基準を知りません。現在「実行可能」状態にあるスレッドのみを見るべきなのか、それとも「条件待ち」と「Object.wait」も重要なのかはわかりません。
あなたが通常従うアプローチと、一般的に使用するツールは何ですか?
java - JStack を使用せずにフリーズした Java アプリからスレッド ダンプを取得する
JStack を使用してフリーズしたアプリケーションのスレッド ダンプを取得しようとすると、スレッドの 1 つから次の結果が返されます。
もちろん、それは私が最も興味を持っているものです:(
Ctrl+Break
どちらも機能しません。スレッド ダンプを取得する他の方法はありますか? Linux と Sun VM 1.6.0_20 を使用しています。
java - 最近のSunJVM(1.6)では、GCスレッド情報を取得できますか?
JRockitを使用すると、どのような方法でもスレッドの完全なリストを取得できます。これらのすべての手段には、ガベージコレクションスレッドに関する情報が含まれています。
1)Thread
クラスに情報を求める:
2)ThreadGroup
その情報を取得するために使用する:
3)JMXを使用してリストを取得します。
4)CTRL-BREAK
ただし、Sun JVM(少なくとも最近のJava 6リリース)を使用すると、ガベージコレクションスレッドとVM定期タスクスレッドが含まれているのはCTRL-BREAKだけのようです。GCスレッドによって使用されるCPUを監視して、GCがCPU時間の大部分を使用しているときにアプリケーションが検出してログに記録できるようにすると便利です。この情報がないと、GCが特定の設定されたしきい値を超えた場合にのみわかります。
GCスレッドのスレッドIDを見つけることができれば、JMXはおそらく必要な残りの情報を提供します(これらのスレッドに何か違いがない限り)。たとえば、次の方法を使用します。
Sun JVMを使用してガベージコレクションスレッドに関する情報を取得する方法(または不可能であることがわかっている場合)を知っている人はいますか?
java - javaでjnlpアプリケーションのスレッドダンプを生成するにはどうすればよいですか
jnlp アプリケーションをデバッグしようとしています。いくつかのシナリオの後にハングします。
jnlp アプリケーションのスレッド ダンプを収集したいと考えています。
それを行う方法に関する提案。
Win XP、32ビットjvmで実行しています
java - Java OutOfMemory 例外をデバッグするには?
java.lang.OutOfMemoryError
例外をデバッグする最良の方法は何ですか?
これがアプリケーションで発生すると、アプリケーション サーバー (Weblogic) がヒープ ダンプ ファイルを生成します。ヒープ ダンプ ファイルを使用する必要がありますか? Java スレッド ダンプを生成する必要がありますか? 違いは正確には何ですか?
更新: スレッド ダンプを生成する最良の方法は何ですか? (私kill -3
たちのアプリは Solaris で実行されます) アプリを強制終了してスレッド ダンプを生成する最良の方法はありますか? アプリを強制終了せずにスレッド ダンプを生成する方法はありますか?
java - タイムスタンプを使用してSunJDKでスレッドダンプを生成する
SunのJava5を使用しているアプリケーション用にSunSolarisマシンでスレッドダンプを生成する必要があります。次のコマンドを使用してスレッドダンプを生成しています。
ただし、これを使用して生成されたスレッドダンプは、ダンプが取得されたときのタイムスタンプをログに記録しません。複数のスレッドダンプを取得すると、これが問題を引き起こします。
スレッドダンプを使用してタイムスタンプを取得する方法を提案できますか?
java - Java Webアプリケーションで無限ループを見つける方法は?
ある日、Java WebアプリケーションのCPU使用率は最大100%になります。再起動するとインシデントは解決しますが、問題が再発してから数時間後には問題は解決しません。新しいバージョンによって無限ループが導入されたのではないかと疑われましたが、コードやサーバーに変更を加えていません。
kill -QUITを使用していくつかのスレッドダンプを作成し、すべてのスレッドの詳細を調べて比較することで、問題を見つけることができました。すべてのスレッドダンプに1つのスレッド呼び出しスタックが表示されることがわかりました。分析後、データベースで定期的に更新される一部のデータでfalseになることのないwhileループ条件がありました。
Webアプリケーションのいくつかのスレッドダンプの分析は本当に面倒です。
では、実稼働環境でそのような問題を見つけるためのより良い方法やツールを知っていますか?
java - OpenVMS でのスレッド ダンプの作成
OpenVMS で実行中の Java プロセスからスレッド ダンプを取得するにはどうすればよいですか? プロセスは JMX 対応ではありません。kill -QUIT
Unix またはCtrl+Break
Windowsに似たものを探しています。
編集: ここで答えを見つけました: http://h18012.www1.hp.com/java/documentation/1.6.0/ivms/docs/user_guide.html#javaenable_sigquit_mailbox
java - Javaスレッドダンプ要約ツール
Tomcatサーバーからのスレッドダンプを確認する必要がある場合があります。ただし、私のアプリケーションは数百のスレッドを持つスレッドプールを使用するため、これは非常に遅いプロセスです。私が見ているほとんどのスレッドダンプには、作業を待機しているスレッドと同じスタックトレースが含まれています。
スレッドダンプを解析し、各状態のスレッド数のカウントとともに一意のスタックトレースのみを表示するツールはありますか?これにより、共通の場所で作業を待機している数十または数百のスレッドをすばやく無視できます。
スレッドダンプアナライザーを試しましたが、これでは一般的なスタックトレースの要約は行われません。
java - kill -3 空を返す
Java アプリケーションがありますが、スタックしているようです。kill -3 を試しましたが、出力は空です (ファイルにリダイレクトされますが、何もありません)。
それが何をしているのかをどのように見ることができますか?
編集:
jstack を試しましたが、クラッシュしました:
EDIT2:
これは jvisualvm クラッシュです:
/usr/pkgs/java/1.6.0.25/bin/../lib/visualvm//platform/lib/nbexec: 539 行目: 18217 中止された "/usr/pkgs/java/1.6.0.25/bin/java" -Djdk .home="/usr/pkgs/java/1.6.0.25" -classpath "/usr/pkgs/java/1.6.0.25/lib/visualvm/platform/lib/boot.jar:/usr/pkgs/java/1.6. 0.25/lib/visualvm/platform/lib/org-openide-modules.jar:/usr/pkgs/java/1.6.0.25/lib/visualvm/platform/lib/org-openide-util-lookup.jar:/usr/ pkgs/java/1.6.0.25/lib/visualvm/platform/lib/org-openide-util.jar:/usr/pkgs/java/1.6.0.25/lib/visualvm/platform/lib/locale/boot_ja.jar:/ usr/pkgs/java/1.6.0.25/lib/visualvm/platform/lib/locale/boot_zh_CN.jar:/usr/pkgs/java/1.6.0.25/lib/visualvm/platform/lib/locale/org-openide-modules_ja .jar:/usr/pkgs/java/1.6.0.25/lib/visualvm/platform/lib/locale/org-openide-modules_zh_CN.jar:/usr/pkgs/java/1.6.0.25/lib/visualvm/platform/lib/locale/org-openide-util-lookup_ja.jar:/usr/pkgs/java/1.6.0.25/lib/visualvm/platform/lib/locale/org-openide-util-lookup_zh_CN .jar:/usr/pkgs/java/1.6.0.25/lib/visualvm/platform/lib/locale/org-openide-util_ja.jar:/usr/pkgs/java/1.6.0.25/lib/visualvm/platform/lib /locale/org-openide-util_zh_CN.jar:/usr/pkgs/java/1.6.0.25/lib/dt.jar:/usr/pkgs/java/1.6.0.25/lib/tools.jar" -Dnetbeans.dirs= "/usr/pkgs/java/1.6.0.25/bin/../lib/visualvm//visualvm:/usr/pkgs/java/1.6.0.25/bin/../lib/visualvm//profiler:" -Dnetbeans .home="/usr/pkgs/java/1.6.0.25/lib/visualvm/platform" '-client' '-Xms24m' '-Xmx256m' '-Dsun.jvmstat.perdata.syncWaitMs=10000' '-Dsun.java2d .noddraw=true' '-Dsun.java2d.d3d=false' -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath="/root/.visualvm/6u23/var/log/heapdump.hprof" org.netbeans.Main --userdir "/root/.visualvm/6u23" "--branding" "visualvm" 0<&0