web-dev-qa-db-ja.com

Tomcatスレッドダンプ

Tomcatからスレッドダンプを取得する場所はありますか?特定の時間にTomcatで実行中のスレッドを監視したい。

注: Webロジックでそれを行っていましたが、Tomcatでどのように実行されるかわかりません。

20
Abdullah

Linuxを使用している場合、kill -3 [Tomcatのpid]を送信すると、catalina.out内の現在のすべてのスレッドがダンプされます。

34
Julien

Tomcatスレッドを監視してダンプを実行する簡単な方法があります。以下のJava optionsでTomcatを起動します。

-Dcom.Sun.management.jmxremote.port=<some free port>
-Dcom.Sun.management.jmxremote.ssl=false
-Dcom.Sun.management.jmxremote.authenticate=false

Tomcatを再起動した後、単にjconsole(jdkの一部)またはvisualvmを起動して、上記で選択したポートへの新しいjmx接続を作成できます。
両方のツールで、ダンプを取るオプションもあります;)

!!!しかし、閉じた/セキュリティで保護された環境でのみそれを行います-認証セットがないためです。!!!

6
Patrik Bego

add Javaサーバーへのメロディ https://code.google.com/p/javamelody/

実行時のスレッドを含む多くの情報を提供します

5
olexii

次の手順は、現在のJavaスレッドを実行して分析するのに役立ちます。

  1. IBM Thread&Dump Monitor Analyzer からニーススレッドダンプアナライザーであるIBM JCAをダウンロードします。
  2. 以下を実行して、Tomcatスレッドダンプを取得します。root@localhost:~# Sudo -u $Tomcat_USER $Java_HOME/bin/jstack -J-d64 -l $(ps aux | grep '[c]atalina' | awk '{print $2}') > ~/threads.log
  3. IBM Thread&Dump Monitor Analyzer でスレッドダンプを開きます

注:$Java_HOMEを現在のJDKへのパス、$Tomcat_USERをTomcatを実行しているユーザーに置き換えます。間違ったユーザーを渡すか、rootを使用すると、次のようなエラーが発生します。

3047: well-known file is not secure
1
Guido Medina

Netbeansプロファイラーを使用して、Webアプリケーションをプロファイリングしてください。

https://profiler.netbeans.org/

http://wiki.netbeans.org/FaqProfilerAttachRemoteServer

0
Prabhakaran