15

リモートTomcatプロセスの監視に問題があります。JConsole/JVisualVMのJava6バージョンを使用しようとしています。

適切なセキュリティポリシーを使用して、リモートサーバーでjstatdを実行しています。プロセスが開始され、TCP接続が使用可能になります。

JConsoleを介して接続しようとすると、が表示されます'Connection Failed:jmxrmi'

VisualVMを介して接続しようとすると、ホスト名を追加し、右クリックオプションは「JMX接続の追加」です。それが私が期待するものであるかどうかは、ドキュメントからはわかりません。接続しようとすると、次のようになります。

'Cannot connect using service:jmx:rmi:///jndi/rmi://<host>:<port>/jmxrmi'.

したがって、ドキュメントでは、UIがjmxrmiを要求している間、VisualVMで監視するためにjstatdをリモートで実行するだけでよいと示唆しています..それらは同じですか?jmx rmiオプションを使用してtomcatをセットアップしようとしましたが、ファイアウォールの問題ではないことはわかっていますが、タイムアウトもしました。

誰かがこの方法でリモートTomcatプロセスを接続することに成功し、その方法を説明できれば、それは私を大いに助けてくれるでしょう。

4

5 に答える 5

15

通常、JAVA_OPTS でサーバーの IP アドレスを指定する必要があります。そうしないと、JMX が別のポートでサーバーに再接続するようクライアントに指示を送り返し、クライアントに提供する IP アドレスがない場合、接続が失敗するように見えます。

これに対する議論は次のとおりです。

-Djava.rmi.server.hostname=1.2.3.4

詳細については、セットアップ プロセスのこのウォークスルーを参照してください。

于 2012-02-05T22:38:28.717 に答える
14

TomcatVMの管理拡張機能を有効にする必要があります。通常、これは次のようなものを渡すことを意味します。

-Dcom.sun.management.jmxremote.port=8086
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

もちろん、上記の方法で行う場合は、Tomcatがインターネット上に表示されないようにするか、ポートがリモートアクセスからファイアウォールで保護されているか、ポートスキャンや侵害を防ぐために同様のセキュリティ対策を講じてください。それ以外の場合は、認証オプションを使用します。

于 2009-06-27T00:30:20.263 に答える
2

JMX ポートは通常、データを別のポートに送信するため、lsof -p -n | を実行してそのポート番号を見つける必要があります。grep TCP を実行し、そのポートへのアクセス許可を有効にしてから、リモート JMX エージェントへの接続を試みます。

于 2012-03-14T14:07:16.837 に答える
2

私は実際にこの問題に自分で取り組み、それを理解しました。

問題は RMI 接続にあると思います。使用するポートを予測できないため、ファイアウォールで動作させることはできません。

回避策は、SSH プロキシを使用することです。

  1. アプリケーションが実行されているボックスに SSH 接続しますが、次のように -D オプションを使用します。

    ssh user@remoteHost -D 9999

    これにより、ローカル マシンのポート 9999 でソックス プロキシが開始されます。

  2. JVisualVM を開き、設定の「ネットワーク」で、localhost のポート 9999 でソックス プロキシを使用するように設定します。

上記を実行すると、通常どおりリモート マシンに接続できるようになります。すべての RMI トラフィックが SSH プロキシを経由するようになったため、ファイアウォールを通過して正常に動作します。

幸運を :-)

于 2014-12-31T12:54:55.380 に答える