どのように活性化JMX私のJVMのためのアクセスjconsole?
-
21-08-2019 - |
質問
どのように活性化JMX、JVMのためのアクセスjconsole?
解決
に関連する文書で、できるだけ早く送ってくださ
http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html
Startプログラムは、以下のパラメータ:
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9010
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
例えばこのように:
java -Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=9010 \
-Dcom.sun.management.jmxremote.local.only=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-jar Notepad.jar
-Dcom.sun.management.jmxremote.local.only=false
必ずしも必要としません
なので、この値は管理画面より変更可能でUbuntu.エラーのようなものになっていくかも
この:
01 Oct 2008 2:16:22 PM sun.rmi.transport. customer .TCPTransport$AcceptLoop executeAcceptLoop
WARNING: RMI TCP Accept-0: accept loop for ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=37278] throws
java.io.IOException: The server sockets created using the LocalRMIServerSocketFactory only accept connections from clients running on the host where the RMI remote objects have been exported.
at sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(LocalRMIServerSocketFactory.java:89)
at sun.rmi.transport. customer .TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:387)
at sun.rmi.transport. customer .TCPTransport$AcceptLoop.run(TCPTransport.java:359)
at java.lang.Thread.run(Thread.java:636)
見 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6754672
またはご注意ください -Dcom.sun.management.jmxremote.authenticate=false
る
アクセスをご利用の方だけでは、JVMに
地機ではどちらでも構いません。
更新:
場合によってお見せできなかったのサーバーです。こうして固定すればこのパラメータを設定して: -Djava.rmi.server.hostname=127.0.0.1
他のヒント
走Dockerコンテナを導入し、全体のスルーレートの追加問題のための接続できればこのことで人がいる。その結を添加する必要がある一方、以下のオプションについてご説明させていただき。
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=${DOCKER_HOST_IP}
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.rmi.port=9998
DOCKER_HOST_IP
と異なり使用jconsole地には、広告、異なるIP以外からの容器です。する必要がありま置き換え ${DOCKER_HOST_IP}
の外部で分解可能IP(DNS名)のDockerます。
JMXリモート&RMIポート
うJMXもアクセスする必要があるときは、リモート管理インタフェース(jstat) 用途別のポート 転送データの一部がarbitratingに接続します。こちらでお分かりになったどこでもすぐに明らかに jconsole
この値を設定.のリンク条のプロセス:
- いつから
jconsole
ログ記録可能 - 失敗
- ギャラリポート
jconsole
と利用 - 使用
iptables
/firewall
ルールとしてさせるのに必要なされ、そのポート接続
したがその作品はありませんautomatableます。I民からのアップグレードjconsoleる Doodle のできる明示的に指定すると、その jstatd
動かした場合に起こります。にDoodleを追加して、新しいリモートホストを更新する価値との相関を示し上記で指定された:
そして右クリックして新しいリモートホストに接続 Add JMX Connection...
も忘れずにチェックボックスをチェックのための Do not require SSL connection
.いることを許可すべきます。
注jconsoleを実行中のプロセスに自分自身を添付するために、最新の化身でJava 6は、JMXの呪文なしで開始された後でもできます。
それはあなたに利用可能である場合、それはプロファイラなどのプロセスを実行する上での豊富な情報を提供して、またjvisualvm検討します。
私はND 7.0
WAS使用しています私のJVMは、すべての次の引数は、JConsoleの中に監視する必要が
-Djavax.management.builder.initial=
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8855
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
Linuxでは、私は次のparamsを使用します:
-Djavax.management.builder.initial=
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9010
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
ホスト名は、ホストアドレス(192.168.0.xの)に解決されるようにとも私はむしろループバックアドレスより/etc/hosts
を編集した(127.0.0.1)
お客様のjavaアプリケーションは以下のコマンドラインパラメータ:
-Dcom.sun.management.jmxremote.port=8855
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
使用することが大切で、 -Dcom.ます。ます。jmxremote.ssl=false パラメータやしたくない場合の設定をデジタル証明書のjmxます。
の場合を開始されたアプリケーション機のIPアドレス 192.168.0.1, 開放 jconsole, 入 192.168.0.1:8855 の リモートプロセス 分野をクリックし 接続.
以下のコマンドラインパラメータと共に、
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
時々、Linuxサーバーで、IMXの接続が成功しません。それはように雲のLinuxホストでは、/ etc / hostsにホスト名がホストアドレスに解決、ためです。
それを修正するための最良の方法である、ネットワーク内の他のマシンからのping、特定のLinuxサーバーと
でそのホストのIPアドレスを使用します-Djava.rmi.server.hostname=IP address that obtained when you ping that linux server.
しかし、あなたはifconfig.meを使用してLinuxサーバから取得するIPアドレスに依存していることはありません。あなたがそこに着くIPがホストファイルに存在するマスクされたものです。
私はこの正確な問題があったが、テストのためのGitHubプロジェクトを作成しましたそして正しい設定を考え出すます。
これは、サポートスクリプトで働いDockerfile
、および迅速なテストのための簡単なdocker-compose.yml
が含まれています。
まず、あなたのJavaプロセスがすでにJMXパラメータで実行されているかどうかを確認する必要があります。次の操作を行います。
ps -ef | grep java
あなたが監視する必要があなたのJavaプロセスを確認してください。あなたがをDjmx.rmi.registry.port = XXXX ののJMX RMIのパラメータを見ることができる場合は、ポートはJMX接続の下にリモートで接続するには、あなたのJava VisualVMは、ここで言及した使用。
これは、JMXのRMIポートを介して動作していない場合、あなたは下記のパラメータを使用してJavaプロセスを実行する必要があります:
-Djmx.rmi.registry.port=1234 -Djmx.rmi.port=1235 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
注:ポート番号は、あなたの選択に基づいています。
。これは、JMX coneectionために、このポートを使用することができます。ここでは、ポート1234
です。