6

次のことを再確認しました。

  • Tomcat が実行されているのと同じボックスで jvisualvm を実行しています。
  • これは Java 6u19 です。
  • Tomcat サービスは、ログインしているのと同じユーザーとして実行されています。
  • Tomcat サービスは、jvisualvm を使用しているのとまったく同じ JVM ディレクトリを使用しています。
  • Tomcat は特定のポートで JMX を有効にしていますが、これは役に立たないと思います。

これで、Tomcat プロセスjvisualvm の「ローカル」リストに表示されます。「<不明なアプリケーション> (pid 5644)」と表示されます。それをダブルクリックすると、すべてのタブに「この JVM ではサポートされていません」と表示されます。ただし、VisualVMは「ローカル」に表示され、すべてのタブが機能し、明らかに同じJVMインスタンスを使用しています。「<不明なアプリケーション>」インスタンスに JMX 接続を追加する明らかな方法はありません。

「Local」に「localhost:(my port number)」として Tomcat の JMX インスタンスが表示されますが、これは機能しますが、Visual GC タブには「この JVM ではサポートされていません」と表示されます。 JMX 経由で動作します。

私は何を間違っていますか?jstatd を起動してみました。違いはありませんでした。jstatd を起動すると、visualvm は「ローカル」「jstatd」を認識しますが、それをダブルクリックすると、他の Java プロセスではなく、その jstatd プロセスを監視しているように見えます。

注: Tomcat をサービスとしてではなく、CMD ウィンドウで直接実行することにしました。viola では、visualvm が完全に機能するようになりました。「jps」を実行して「プロセス情報が利用できません」という苦情が出たときにこれを試してみようと思い、それについてGoogleで検索したところ、Javaアプリをサービスとして実行したときにこれを取得したと言う人を見つけました。これはテストベッドでは役立ちますが、実稼働システムを監視する方法を理解するのには役立ちません。

これは、Windows Server 2003 の Tanuki ラッパーの下で Windows サービスとして実行されている Tomcat です。

4

1 に答える 1

3

あなたの説明から、Jvmstatが何らかの形で壊れていることは明らかです。Jvmstat は、Visual GC、jps、および VisualVM で使用されます。Tomcat が「ローカル」ノードの下に認識されないアプリケーションとして表示される理由は、VisualVM が実行中の Java アプリケーションがあることを (jvmstat を介して) 検出したが、それに関するデータを取得できないことを意味します。これは、Tomcat を Windows サービスとして実行しているという事実に関係している可能性があります。すべての Java アプリケーションを終了し、%TMP% ディレクトリにある hsperfdata_{your_user_name} ディレクトリを削除して、Tomcat と VisualVM を再起動してみてください。Tomcat が「Local」ノードで正しく認識されている場合、Visual GC も機能します。これが失敗した場合は、Tomcat を起動して jps を実行します。

jps -J-Djps.debug=true -J-Djps.printStackTrace=true

出力を投稿します。これにより、なぜ jvmstat が Tomcat から情報を読み取れないのかがわかります。

于 2011-08-07T09:53:50.813 に答える