11

リモート マシンで実行している Java プロセスがあり、そのプロセスはいくつかの mbean をセットアップします。またjstatd、そのマシンで Java プロセスと同じユーザーとして実行しています。(mbeans は、プログラムまたはその他を使用してセットアップできますが-Dcom.sun.management.jmxremote...、これは違いを生むようには見えません)。

VisualVM はjstatd自動的に検出するプロセスに接続できますが、これは、mbeans や、たとえば CPU 履歴チャートにアクセスできないことを意味します。または、明示的な JMX 接続を作成することもできます。これにより、通常の範囲の便利なツールが提供されますが、アプリケーションの起動時にランダムな JMX ポートが割り当てられるようにしたいので、この構成を静的にすることはできません。

VisualVM を JMX 経由でプロセスに自動接続する方法はありますか? これには、JMX ポートを自動検出する必要がありますが、それができると思っjstatdていました。これを自動化するためのvisualvmのプラグインを知っている人はいますか?

4

1 に答える 1

13

残念ながら、リモート アプリケーションにランダムな JMX ポートを割り当てる方法はありません。リモートアプリケーションを起動するには

-Dcom.sun.management.jmxremote.port=<fixed port>
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

VisualVM は、Jvmstat (jstatd によって提供される) を介してこの構成を読み取り、リモート アプリケーションへの JMX 接続を自動的に開くことができます。そのため、固定ポートをリモート アプリケーションに割り当てる必要があります。一度それを取得すると、すべてが正常に機能し、VisualVM は JMX を介してアプリケーションに自動的に接続します (実際には、Jvmstatと JMX の両方からのデータを結合します)。

于 2010-12-16T12:18:16.870 に答える