9

この問題に関する他の質問を確認しましたが、これまでのところ問題はありません。私のセットアップは次のとおりです。TC6 は私の macbook の debian vm で実行されます。/etc/default/tomcat6.0 には、次のオプションが設定されています。

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

netstat -ntlp は私に与えます:

tcp6       0      0 :::8080                 :::*                    LISTEN      6550/java
tcp6       0      0 :::8086                 :::*                    LISTEN      6550/java

ここで 6550:

root      6550  3.3  6.8 224888 52984 pts/0    Sl   10:31   0:43 /usr/lib/jvm/java-6-sun/bin/java -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/var/lib/tomcat6.0/conf/logging.properties -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8086 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.endorsed.dirs=/usr/share/tomcat6.0/common/endorsed -classpath :/usr/lib/jvm/java-6-sun/jre//lib/jcert.jar:/usr/lib/jvm/java-6-sun/jre//lib/jnet.jar:/usr/lib/jvm/java-6-sun/jre//lib/jsse.jar:/usr/share/tomcat6.0/bin/bootstrap.jar:/usr/share/tomcat6.0/bin/commons-logging-api.jar -Dcatalina.base=/var/lib/tomcat6.0 -Dcatalina.home=/usr/share/tomcat6.0 -Djava.io.tmpdir=/var/lib/tomcat6.0/temp org.apache.catalina.startup.Bootstrap start

ファイアウォール:

Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all      anywhere             anywhere            

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all      anywhere             anywhere 

jvisualm を使用して OSX から接続しようとすると:

VisualVM は次のエラーで失敗します。

Cannot connect using service:jmx:rmi///jndi/rmi://<vmhostname>:8086/jmxrmi

ssh -XTomcat が実行されているのと同じマシンで jvisualvmを使用して VM に接続して起動すると、最初は TC が表示されませんが、上記のように jmx 接続を追加できます。

これは、外国のホストが rmiregistry にアクセスするのを不思議なことに妨げられているという問題でしょうか? どうしてこんな愚かなことをする人がいるのだろうか?

私は何を間違っていますか?

(4 長文すみません)

4

10 に答える 10

5

Visual VM を Tomcat 7 に接続する方法に関するチュートリアルを次に示します。少し冗長ですが、ほとんどの人が遭遇する多くの問題を回避するのに役立つはずです。

于 2012-02-05T22:42:12.803 に答える
3

このページの jmx リスナーを確認してください。 http://tomcat.apache.org/tomcat-6.0-doc/config/listeners.html

JMX ポートと RMI レジストリ ポートの両方を設定できます。どちらもファイアウォールで開く必要があります。

于 2010-09-21T14:17:03.297 に答える
1

jstatd が実行されている /etc/hosts に実際の IP とホスト名を追加してみてください。

于 2011-09-13T16:03:02.317 に答える
1

catalina_opts:-Djava.rmi.server.hostname=vmhostname に追加してみて、Mac がこのホスト名を解決できることを確認してください。たとえば nc -v vmhostname 8086 、接続を開くことに成功する必要があります。

于 2011-01-26T20:02:03.007 に答える
1

この手順に従ってください。

  • ダウンロード Jvisualvm から jvisualvm セットアップをダウンロードします。

  • このセットアップを解凍し、コマンド ラインから bin ディレクトリに移動します

  • 次のコマンドを使用して、visualvm を開始します。

    \bin>visualvm.exe -J-Dnetbeans.system_socks_proxy=localhost:9998 -J-Djava.net.useSystemProxies=true

  • putty セットアップを取得し、putty のインストール ディレクトリに移動します。次のコマンドを使用して、リモート システムへの ssh トンネルを作成します。

パテ -D 9998 -load Name_of_the_saved_putty_session

  • saved_putty_session には、localhost:JMX_port および some_source_port へのトンネルが必要です。

  • 左ナビゲーションのvisualvm UIで、リモートを右クリックし、リモートホストのパブリックIPを使用して「リモートホストを追加」します

  • この追加されたリモートホストで右クリックして、「ADD JMX CONNECTION」と言います

  • 接続ボックスで localhost:source_port_provided_in_putty_tunnel と言う

  • OKボタンをクリックして完了です。

于 2011-09-16T15:24:02.263 に答える
0

このオプションを使用することをお勧めします:

-Dcom.sun.management.jmxremote.port=1099

次に、

service:jmx:rmi:///jndi/rmi://machinedomainname:1099/jmxrmi

RMIがすべてのインターフェース(つまり0.0.0.0)でリッスンしている限り、ファイアウォールがオフになっている(または注意深く構成されている)限り、リモートサーバーからの接続に問題はありません。

于 2012-11-13T21:32:05.520 に答える
0

jstatdプロセスが、必要な権限を使用して、監視するリモートマシンで実行されていることを確認してください。

于 2010-04-14T10:26:21.557 に答える
0

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

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

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

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

    ssh user@remoteHost -D 9999

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

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

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

幸運を :-)

于 2014-12-31T12:52:25.653 に答える
0

できることを確認してください

a) ping <vmhostname>
b) telnet <vmhostname> 8086

の代わりに IP アドレスを使用できることにも注意してください。<vmhostname>

于 2010-02-19T13:56:58.267 に答える