次のことを再確認しました。
- 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 です。