状況: Java jre 1.6.37 で実行されているインスタンス化されたアプリケーションを含む VM があります。すべてのインスタンスには、仮想 IP と、その Linux VM 上の独自のホスト名があり、eth0:1 eth0:2 などとして表示されます。すべてのエントリもあります。ホストのインスタンス
インスタンスの 1 つについて、JMX モニタリング パラメータを wrapper.conf に追加しました。
wrapper.java.additional.7=-Dcom.sun.management.jmxremote
wrapper.java.additional.8=-Dcom.sun.management.jmxremote.port=6423
wrapper.java.additional.9=-Dcom.sun.management.jmxremote.ssl=false
wrapper.java.additional.10=-Dcom.sun.management.jmxremote.authenticate=false
(追加して試してみました: -Djava.rmi.server.hostname=YOUR_IP YOUR_APP)
問題:
アプリケーションを再起動し、JDK を使用して Windows PC から JConsole を使用してそのアプリケーションに接続しようとしました。接続できませんでした。マシンとポート6423でtelnetすると、接続できます。
試行を分析します。
また、JDK をその Linux マシンにコピーし、そこで試してみましたが、同じ結果が得られました。そこで、同じアプリケーションが仮想 IP などでインスタンス化されて実行されている別の VM を使用しました。接続は可能でした。
最初の VM には、接続をブロックするファイアウォールなどはありません。また、netstat -an |grep 6423
それがリッスンであることも教えてくれます
なぜそれが1つのVMで機能しているのに、他のVMでは機能していないのか、その仮想IPとポート6423に対してローカルで呼び出されたjconsoleを使用していない理由がわかりません