jmxまたはjstatdを使用して(EC2マシンへの)sshトンネルを介してvisualvmアプリを使用したいと思います。どうすればよいですか?試行された(そして失敗した)もののリストは次のとおりです:(ところで:ビジュアルvmが適切でない場合、リモートマシンでメモリリークを見つけるにはどうすればよいですか?)
jstatd:試行:
EC2マシンにjstatdサーバーをセットアップしました(アプリはすでに実行されていました)次に、ローカルポート3333をリモートポート1099にマッピングするトンネルをセットアップしましたVisualVMで、ポート3333でjstatdを使用して接続しようとしました...どのプロセスもありませんEC2に表示されました
このリンクは、jstatdが別のポートを開くことを示しています:http: //rukuro-blog.heroku.com/2011/06/30/monitoring-remote-java-applications-with-visualvm ...ローカルホストからそのポートをトンネリングしましたリモートに。visualvmを再起動しました...まだ何もありません
次のコマンドを使用してEC2から実行されているプロセスを一覧表示しようとすると、次のようになります。
jps -l -m -v rmi://localhost
...プロセスのリストを取得しました
を使用して自宅のマシンにリストしたとき
jps -l -m -v rmi://localhost:3333
....私は何も得られませんでした!したがって、rmiポートはjstatdポート(3333)でトンネリングされていません...?
jmxの試み:
次のコマンドを使用して、リモートマシンでアプリケーションを起動しました。
java -Dcom.sun.management.jmxremote.port=3333 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false\
-cp :post/* <appName>
...アプリが動作するので、ローカルポート3333をリモート3333にトンネリングしました
次に、ビジュアルvmインターフェイスからlocalhost:3333へのjmxリンクを設定しようとしました:...次のようなエラーが表示されます:
cannot connect to localhost:3333 using service:jmx:rmi:///jndi/rmi://localhost:3333/jmxrmi
RMI削除サーバーへのリンクを設定する必要がある場合、その方法がわかりません。
JMXMPの試み:
これは有望ですが、何かが正しくありません。
まず、jmx_remote jarをクラスパスに追加し、上記のJMXの場合と同じコマンドを使用して、リモートマシンでアプリケーションを起動しました。オラクルのダウンロードリンクでjarファイルを見つけました
ローカルポート3333からリモートポート3333へのsshトンネルを設定しました。次に、calsspath内の同じjmx_remoteファイルを使用してvisualvmを起動しました。
visualvm -cp:a ~/jmx/jmxremote_optional.jar
次に、visualvmをリモートサーバーに接続しようとしました。
service:jmx:jmxmp://localhost:3333
これで、visualvmは無期限に接続しようとしているようです。ステータスバーに「Addingservice:jmx:jmxp:// localhost:3333」と表示され、リモートエンドでアプリケーションをシャットダウンするまで続行します。シャットダウンすると、接続できなかったことを示すポップアップが表示されます。サーバーで。
SOCKSの使用について:
JMXとjstatdの両方を使用しようとして失敗しました。
SOCKSプロキシが機能しているかどうかわからないので、次のように接続しようとしました。
ssh -i ~/.ssh/starter.pem -v -D 9696 user@host
完全を期すために、もう一方の端でコマンドを次のように開始しました。
java -Dcom.sun.management.jmxremote\
-Dcom.sun.management.jmxremote.ssl=false\
-Dcom.sun.management.jmxremote.authenticate=false\
-Dcom.sun.management.jmxremote.port=3333 <app>
そして、ローカル側で、このVisualVmヘルプページへのリンクに従ってvisualvm接続を設定しました。
JMX接続では、visualvmでホストを右クリックし、プロンプトが表示されたらホストポートを入力して、マシン名とポートを設定しました。この時点で、下部のステータスバーは、visualvmがリモートマシンに接続しようとしていることを示しており、数分後に失敗します。
jstatd接続では、リモートプロセスが自動的に表示されることを期待していました。これは起こりませんでした...エラーメッセージなどはありませんでした。
靴下側では、次のメッセージが周期的に繰り返されます。
debug1: Connection to port 9696 forwarding to socks port 0 requested.
debug1: channel 2: new [dynamic-tcpip]
channel 3: open failed: connect failed: Connection timed out
debug1: channel 3: free: direct-tcpip: listening port 9696 for 50.16.35.69 port 3333, connect from 127.0.0.1 port 43909, nchannels 4
debug1: Connection to port 9696 forwarding to socks port 0 requested.
debug1: channel 3: new [dynamic-tcpip]
channel 2: open failed: connect failed: Connection timed out
debug1: channel 2: free: direct-tcpip: listening port 9696 for 50.16.35.69 port 1099, connect from 127.0.0.1 port 44644, nchannels 4
これは靴下チャンネルと関係があるのだろうか。以前にシングルポートをリモートマシンにトンネリングしたことがあるので、トンネリングの構成の問題であるとは想像できません。私は両側でubuntulinuxを実行しています。
読んでくれてありがとう :)