2

Jstat Documentationから、jstat はローカルおよびリモート JVM に接続できます。URI は次のように形成できます。

 [protocol:][//]lvmid[@hostname[:port]/servername]

JMXが有効になっているサーバー(CentOS)の1つでJVMを実行しています-

xyz   23878     1  0 Jun01 ?        04:37:00 java -Xms1g -Xmx1g -XX:NewSize=512m -Xloggc:../9301/logs/gc.log -verbose:gc -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=../9301/logs/oom.log **-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=19301 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.local.only=false** -jar ../0.1.14/xyz-0.1.14.jar -serviceName <name> -dataCenter <name> servicePort 9301

2段階のプロセスを使用するJVisualVMを使用して、ローカルマシンからJVMに接続できます-

  1. デフォルトのポート 1099 で jstatd 接続を介してリモート マシンを追加するように求めるプロンプトが表示されます ->そうすることができ、RMI レジストリが利用可能であることを証明するサーバーが追加されます
  2. サーバーを追加した後、公開されたポートで JMX 接続を JVM に追加できます ->ポート 19301 でプログラムによって JMX が公開され、詳細を表示できるため、成功します。

ただし、同じ目的で jstat を使用することはできません。

jstat -gc process_id@servernameを実行すると、以下の例外が発生します -

RMI Registry not available at <servername>:1099
Connection refused to host: <servername>; nested exception is: 
    java.net.ConnectException: Connection refused

ネット上でさまざまな情報源を確認したところ、VisualVM がマシンを追加できたので、実行されていると思われる jstatd を実行しているとのことです。

質問: jstat コマンドの [vmid] 部分をどのようにフレーミングして接続すればよいですか?

4

1 に答える 1