問題タブ [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 - JVM が GC で時間を費やしたとき、スレッド ダンプはどのように見えるか
Java アプリケーションをプロファイリングすると、興味深い事実に気づきます。JVM がデス スレッド ダンプの GC スパイラルにある場合、次のようになります。
そのため、状態には多くのスレッドがありTIMED_WAITING
ます。理論的には、この状況は正常に機能しているアプリケーションで簡単に見つけることができます (アプリケーションには現時点で受信リクエストがないだけです) が、単一のリクエスト ディスパッチ スレッドで何か有用なことを行っているものは見つかりません (公称ヒット率は約 100 hp です)。
この動作は GC と関係がありますか、それとも単なる偶然ですか?
java - コマンドラインからJavaプログラムのメモリ使用量、スレッドダンプを表示するにはどうすればよいですか?
JVMにJavaプログラムのメモリ使用量とスレッドダンプを表示するように依頼する既知のコマンドラインツールはありますか? ヘッドレスjvisualvmのようなもの?
java - Glassfish v3 - スレッドダンプを取得/分析する方法は?
Linux ボックスの Glassfish 3.1.1 で実行されているアプリのスレッド ダンプを取得/分析しようとしています。私はそれを行う2つの方法に出くわしました。
kill -QUIT <pid>
コマンドラインで実行- Glassfish 管理コンソールで、[一般的なタスク] -> [サーバー (管理サーバー)] -> [全般] タブに移動します。[JVM レポート] をクリックし、[表示] ドロップダウン ボックスから [スレッド ダンプ] を選択します。
これらの両方のスレッド ダンプの結果は異なります。kill メソッドは、XML (hotspot_log) で次の構造を持つファイル (/domains/domain1/logs/jvm.log) を生成します。
終了タグに注意してください
がファイルから欠落しています。 理由を知っている人はいますか?
管理コンソールを介して行われたダンプにより、次の形式のレポートが生成されます。
ダンプを分析するために、TDA - Thread Dump Analyzer (http://java.net/projects/tda/) を試してみたところ、XML バージョンが開くことがわかりましたが、開くまで UI に表示されません。 XML 以外のバージョンも表示されます (両方が表示されます)。
なぜこんなにフォーマットが違うのですか?分析にはどちらが優先されますか? それは問題ですか?
java - kill -3 でスレッドダンプが生成されない
kill -3 / quit PID が何も出力しない、つまり空のスレッド ダンプになる可能性はありますか? サポートエンジニアから話を聞いて、何人かの専門家が検証できるかどうか疑問に思っていました.
これは、RHEL 5 の Java 6_26 にあります。
java - すべてのスレッドによって保持されているロックをプログラムで見つける方法
Thread.getAllStackTraces()を呼び出すことにより、Javaプログラムからスレッドダンプを簡単に出力できます。問題を簡単に診断するために、これをJSPで使用することがありました。しかし、多くの場合、調べる必要のあるもう1つの重要な情報は、スレッドによって保持されているロックと、ブロックされたスレッドが取得しようとしているロックです。Java APIを介してこの情報を取得する方法はありますか?私が見つけたのはThread.holdsLockだけですが、これは、ロックされている可能性のあるすべてのオブジェクトを知っている場合にのみ役立ち、ブロックされたスレッドが取得しようとしているロックを教えてくれません。
(もちろん、ツールを使用してスレッドダンプを作成することでこの情報を取得できますが、システムが自分のマシン上にない場合、このオプションは簡単に利用できないことがよくあります。)
java - 奇妙なJavaスレッドダンプ出力
Javaプロセスのスレッドダンプ(kill -3出力)があり、奇妙な問題が発生します-オブジェクトのロックを待機しているため、多くのスレッドがブロックされているようですが、スレッドが表示されませんこのロックを保持します:
grep 0x00002aab9e9454a0 outputFile | 並べ替え| uniq -c
(複数のダンプがあるため86回ですが、この質問には関係ありません)。
誰かがこのようなことがどのように起こり得るかについて何か考えを持っていますか?
ありがとう!
linux - プロセスのスレッド ダンプ ログを収集する UNIX スクリプト
HashMap.put 関数に関する問題を生成しようとしています。100 を超えるスレッドを実行するテスト コードを作成しました。jstack または kill を使用して、プロセスの特定のスレッドのスレッド ダンプを取得できます。 .問題は、スレッド ダンプをすぐにキャプチャできないことです。プロセスが終了するまで、すべてのスレッド ダンプをファイルに記録したいのですが、これを行うために書き込むことができる Linux コマンドまたはシェル スクリプトはありますか?
java - スレッドダンプ分析(AWT-EventQueueは実行可能ですが、条件を待機しています)
ある(ランダムな)時間の後にフリーズするswingアプリケーションがあります。フリーズした後、10秒ごとに5つのスレッドスナップショットを作成しましたが、それらにはすべてまったく同じ行が含まれています。
スレッドダンプ内の他のスレッドはXXX.javaにないことに注意してください。対応するコード行(XXX.java:171)はやや不快に見えます:
どこ:
a
、b
およびc
はローカルBigDecimal
変数です。MATH_CONTEXT
変数でありpublic final static
、XXX.java内でのみアクセスされます
私の質問(それらのいずれかに答えることは大きな助けになるでしょう)
- これはデッドロックまたは活性の問題の証拠ですか(スレッドは進行していないようですが、
RUNNABLE
状態にあります)? - これがフリーズの原因である可能性が高いですか、それとも別の場所を探す必要がありますか?
- 問題を解決するための次のステップは何でしょうか?
java - tomcatで100スレッドTIMED_WAITING、スレッドの総数が200を超えるとストールします
最近、Tomcatのビジースレッドが200に達したため、本番のTomcatサーバーの1つが応答しなくなりました。再起動する前にスレッドダンプを取得すると、次の3つのスレッドのようにTIMED_WAITING状態のスレッドが100になりました。
4つのアプリケーションのスレッドプール(たとえば、pool-4-thread-20など)もあり、それぞれに20のスレッドがあるので、これらの100のスレッドが待機しているブロッキングキューがわかりませんか?これの原因ではないように思われる休止状態のc3P0接続プールを使用しています。
java.util.concurrent.locks.AbstractQueuedSynchronizer $ ConditionObjectとは何か考えはありますか?