Tomcatからスレッドダンプを取得する場所はありますか?特定の時間にTomcatで実行中のスレッドを監視したい。
注: Webロジックでそれを行っていましたが、Tomcatでどのように実行されるかわかりません。
Linuxを使用している場合、kill -3 [Tomcatのpid]を送信すると、catalina.out内の現在のすべてのスレッドがダンプされます。
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接続を作成できます。
両方のツールで、ダンプを取るオプションもあります;)
!!!しかし、閉じた/セキュリティで保護された環境でのみそれを行います-認証セットがないためです。!!!
add Javaサーバーへのメロディ https://code.google.com/p/javamelody/
実行時のスレッドを含む多くの情報を提供します
次の手順は、現在のJavaスレッドを実行して分析するのに役立ちます。
root@localhost:~# Sudo -u $Tomcat_USER $Java_HOME/bin/jstack -J-d64 -l $(ps aux | grep '[c]atalina' | awk '{print $2}') > ~/threads.log
注:$Java_HOME
を現在のJDKへのパス、$Tomcat_USER
をTomcatを実行しているユーザーに置き換えます。間違ったユーザーを渡すか、rootを使用すると、次のようなエラーが発生します。
3047: well-known file is not secure
Netbeansプロファイラーを使用して、Webアプリケーションをプロファイリングしてください。