18

Apache Tomcat (7.0.34) で実行されているサーブレットを、ローカルで実行されている JVisualVM (JDK 1.7.0 - 06、64 ビット) を使用して Windows 7 (64 ビット) のサービスとしてプロファイリングしようとしています。

最初は、「java.io.tmp」プロパティのバグ/機能が異なるため、Tomcat がローカル アプリケーションのリストに表示されないという問題がありましたが、このフォーラムのいくつかの投稿でアドバイスされているように回避しました。

ただし、Tomcat プロセスはローカル アプリケーションのリストに「ローカル アプリケーション」として表示されるようになりましたが、プロセスを開くと、[監視]、[スレッド]、[サンプラー]、または [プロファイル] のタブはありません。 -tabs は、恐ろしい「この jvm ではサポートされていません」というメッセージを表示します。

次の項目を再確認しました。

  • Tomcat と JVisualVM の両方が同じバージョンの Java を実行していることを、JVisualVM の JVM プロパティを調べて (Tomcat の JMX 接続を使用して) 確認します。
  • Tomcat と JVisualVM の両方が同じ「java.io.tmp」パスを持っていることを確認するには、JVisualVM のシステム プロパティを調べ (ここでも Tomcat の JMX 接続を使用します)、実際の TMP/TEMP ディレクトリを調べて、両方の PID ファイルが存在することを確認します。存在
  • ファイル システムが NTFS であること
  • Windows ユーザーの名前にアンダースコアが含まれていないこと (注: 「firstname.lastname」の形式のネットワーク ログインを使用しているため、ユーザーの名前にはピリオドが含まれていますが、JVisualVM で他の Java アプリケーションを表示するのに問題はありません。なので問題ないと思います)
  • タスク マネージャーでプロセスを確認して、Tomcat と JVisualVM の両方が同じ Windows ユーザーとして実行されていることを確認します。

いくつかの最終的なポイント:

  • サーブレットをプロファイリングする必要があるため、JMX を使用するだけでは不十分です
  • Windows XP マシン (Java 7、サービスとしての Tomcat 7) でプロファイリングできたので、Windows 7 / 64 ビットのように見えますか?

誰かがこの問題を抱えて解決した場合、明らかにその解決策は大歓迎です。ただし、他の人が同じ構成 (Windows 7 64 ビット、Java 7 64 ビット、サービスとして実行されている Tomcat 7) を正常に実行しているかどうかを知るだけでも役立ちます。

更新:サービスとして実行する代わりに、バッチ ファイルを使用して Tomcat を実行したところ、すべてが完全に機能しました。

4

4 に答える 4

7

サービスとして実行する代わりに、バッチファイルを使用してTomcatを実行したところ、すべてが完全に機能しました。サービスとして実行することについてはどうですか」残りの唯一のステップは、JVisualVMをサービスとして実行することでした:)

これを参照

https://blogs.oracle.com/nbprofiler/entry/monitoring_java_processes_running_as

VisualVM と同じユーザーで実行されている Java プロセスのみをプロファイリングできるため、Windows サービス (デフォルトではシステム アカウントで実行されます) をプロファイリングする唯一の方法は、VisualVM 自体を Windows サービスとして開始することです。このアプローチは Windows Vista では機能しないことに注意してください。これは、既定でサービスが UI を表示できないセキュリティ制限があるためです。

もう 1 つのオプションは、Run CMD.EXE as Local System を実行することです。以下を参照してください。

http://vicevoice.blogspot.in/2009/09/vaas-visualvm-as-service.html

于 2013-02-18T11:53:22.853 に答える
2

ネットワーク経由で接続できませんか。つまり、JVMを起動します

 java 
  -Dcom.sun.management.jmxremote
  -Dcom.sun.management.jmxremote.port=1234 
  -Dcom.sun.management.jmxremote.local.only=false 
  -Dcom.sun.management.jmxremote.authenticate=false 
  -Dcom.sun.management.jmxremote.ssl=false 
  -jar my.jar`

ツールで localhost:1234 へのネットワーク接続を作成します。

于 2014-01-27T22:31:59.147 に答える
0

誰かが Windows 7 で解決策を持っているかどうかも知りたいです。前述のように、VisualVM をサービスとして実行するトリックは Vista では機能せず、同じセキュリティ機能が Win 7 での動作を妨げていると想定しています。

私が持っている唯一の解決策は、アプリサーバー (Tomcat) をサービスとしてセットアップして、サーバーが再起動された場合に起動して利用できるようにすることです。次に、サービスを手動で停止し、コマンド ラインからアプリ サーバー (Tomcat) を起動して、VisualVM に接続します。その後、サーバーが再起動されない限り、適切な監視が行われます。

于 2013-07-15T17:59:18.860 に答える