私は次のような問題があります。
WebアプリケーションをTomcat(Linux)にデプロイし、Tomcatのシャットダウン後にps -ef
のプロセスを実行すると、まだjava
プロセスが実行されています。
私はこれが何らかのぶら下がりスレッドのために起こると思いますが、私はこのスレッドをどのように追跡することができないのか分かりません。
この問題をどのようにデバッグできますか?ハングするJavaスレッドをどのようにデバッグできますか?
答えて
以下に説明するように、4-5スレッドダンプを生成し、Samuraiのようなツールを使用してそれらを解析することができます。
スタックスレッドまたは長期実行トランザクションが発生した場合、すべてのスレッドダンプに、特定のスレッドIDがJavaスタックトレース内の同じ行にあることが表示されます。簡単に言えば、トランザクションは複数のスレッド・ダンプにまたがっているため、より多くの調査が必要です。
Samuraiでこれらを実行すると、赤色で強調表示されるので、すばやくクリックして問題を示す行に移動できます。
この例のhereを参照してください。そのリンクのSamurai出力イメージを見てください。緑色のセルは問題ありません。赤とグレーの細胞は見る必要があります。 JVMは、単にCtrl-\
を押して、コンソールで実行されている場合
(Linux)の
:
スレッドダンプを生成します。 JVMは、それにQUITシグナルを送るバックグラウンドで実行されている場合:
kill -QUIT process_id
ありprocess_idを、実行中のJavaプロセスのプロセス番号です。スレッドダンプは、標準出力がリダイレクトされたところに送られます。 あなたは、一般的にコマンドで実行中のすべてのJavaプロセスのプロセス番号を取得することができます。
ps axf | grep java
あなたは正しい、あなたのJavaプロセスがまだ存在していると言いますか? プロセスにはスレッドが接続されている限り存在します。 もしそうなら、私は次のようなアプローチのために行くだろう: - そこに(そして、あなたはQUITシグナルを送った後、プロセスに接続し、スレッドダンプを取得するJVM
が内部で接続され、管理MBeanサーバーにプロセスを実行そのためにJMXをする必要があります。あなたに不審見ているスレッドを参照してください。
を、私はあなたにもスレッドダンプ取るためにJVisualVMを使用することができると思う...
私はあなたがお勧めする方法を知る方法がわかりません – Jim
これはさらに簡単ですが、既に提案されているaviad :):http://www.crazysquirrel.com/computing/java/basics/java-thread-dump.jspx –
JVisualVMのアプローチについては、こちらのチュートリアルhttp://docs.oracle.com /javase/6/docs/technotes/guides/visualvm/threads.html。基本的にjvisualvmは、$ JAVA_HOME/binフォルダにある実行可能ファイルです。実行し、アプリケーションに接続し、それを使って何ができるかを見てください。非常に強力なもの、本当に:) –
- 1. ハングするサイトのnginx/php-fpmをどのようにデバッグできますか?
- 2. tomcat要求スレッドをどのようにデバッグできますか?
- 3. socketRead0でスレッドがハングするJava
- 4. JavaどのようにGUIをスレッドするのですか
- 5. Javaスレッドをハングする方法
- 6. Railsでどのように宝石をデバッグできますか?
- 7. eclipseでGWTプロジェクトをどのようにデバッグできますか?
- 8. IISでPHPをどのようにデバッグできますか?
- 9. PHP CLIのセグメンテーションフォールトをどのようにデバッグできますか?
- 10. 次のMATLABコードをどのようにデバッグできますか?
- 11. IntelliJのDroolsルールをどのようにデバッグできますか?
- 12. このプログラムをどのようにデバッグできますか?
- 13. このセグメンテーションフォルトをどのようにデバッグできますか?
- 14. NSObjectオブザーバをどのようにデバッグできますか?
- 15. mod_rewriteルールをどのようにデバッグできますか?
- 16. カスタムデバッガをどのようにデバッグできますか?
- 17. jQuery Ajaxリクエストをどのようにデバッグできますか?
- 18. ptraceトレースをどのようにデバッグできますか?
- 19. どのようにbashプロンプトをデバッグできますか?
- 20. wpad.datファイルをどのようにデバッグできますか?
- 21. React VRコードをどのようにデバッグできますか?
- 22. intellij gdslファイルをどのようにデバッグできますか?
- 23. php gettextをどのようにデバッグできますか?
- 24. HtmlProviderをどのようにデバッグできますか?
- 25. どのようにスレッドの数を制御できますか?
- 26. Synchronizeがスレッドをハングするように見える
- 27. Pythonスレッドをどのように抑制できますか?
- 28. Flex 3のデータバインディングはどのようにデバッグできますか?
- 29. Rubyのmethod_missingはどのようにデバッグできますか?
- 30. JavaスレッドはinvokeLater()とどのように同期しますか?
そのないジムが求めていることを、彼はapprochをデバッグするために求めています。 –
@ user1348753編集を参照してください。 – aviad
@aviad:私は 'kill -3'を行い、Samurai.Theにjavacoreをロードしました。ログレポーターだけの視覚的なテーブルはありませんでした。 t。このレポートからスレッドをどのようにトレースできますか? – Jim