何度も聞かれたはずのこの質問で申し訳ありませんが、問題を解決できません。私は多くのブログ、サイト、フォーラムなどを読んできましたが、私の場合は解決策が見つかりませんでした。
ケース : パフォーマンス/スレッド/メモリ監視のために、ボックスの VisualVM を離れたサーバー (Tomcat、WebLogic) に接続する必要があります。これらのサーバーは、ファイアウォールで保護された (物理または仮想) マシンにインストールされます。ファイアウォールでは大きな間隔でポートが開いており、使用できますが、すべてのポートではありません。
テスト
- サーバーの起動時にサーバー側で次のJVMオプションを使用して、VisualVMでJMXを介した直接接続を試みました。
-Djava.rmi.server.hostname=[hostname] -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=[port] -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
私のネットワークからのサーバーのホスト名とIPアドレスは、リモートサーバーのネットワークからのものと同じではないため、ホスト名を正確に指定しました。
成功しません。VisualVM は常に不明なサーバーを検索しているようです。
私のボックスからアクセス可能なポート(-pオプション)でサーバー側でjstatdを開始しようとしました(このポートでtelnetが機能します)が、jstatdポートを使用してこのホストでvisualVMを起動すると、まだ到達できない何かを待っているようです... . このリモート ホストに接続する jps と同じ動作。
ネットワーク保護の少ないサーバーで同じツールを使用してみましたが、うまくいきました。そのため、ボックスとサーバー間の接続を確認しましたが、jstatd に指定したポートとは異なるポートで接続されています。このポートは最初の通信 (一種のハンドシェイク) に必要であり、実際の通信は他のポートで行われますが、予測できません (例: 60305、55197、...)。RMI がどのように機能するのかよくわかりません。
助けてください、気が狂いそうです!