如何在Ubuntu中将JMC(Java Mission Control)连接到远程JVM?

Sir*_*uti 19 java ubuntu jmc

我可以在同一系统上连接到JMC到JVM.但是,我想监视远程服务器.如何将本地JMC连接到远程JVM?

Hir*_*irt 42

这些都在文档中描述:
1.单击帮助 - > Java任务控制帮助.
2.检查JVM浏览器帮助.

有关更多详细信息,请访问:http:
//docs.oracle.com/javase/7/docs/technotes/guides/management/agent.html

首先,您需要在服务器上启用外部JMX代理.您可以通过将相关的com.sun.management.jmxremote添加到要连接的服务器JVM的命令行标志来完成此操作.以下是可以使用的一组系统属性的简单示例.它们会禁用安全性和身份验证,因此不要在生产中使用它:

-Dcom.sun.management.jmxremote.port=7091
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
Run Code Online (Sandbox Code Playgroud)

接下来,在JMC中创建自定义连接.您可以通过单击JVM浏览器中的"创建自定义连接"按钮来执行此操作: 创建自定义连接按钮的位置

在即将出现的对话框中,您只需输入主机和端口即可.

如果遇到麻烦,请先查看JMC(常见问题)附带的文档的最后一章: 在哪里可以找到帮助

如果这没有帮助,JMC论坛有一个更广泛的常见问题解答:https://community.oracle.com/message/11182417#11182417.

  • 在 SSH 隧道的情况下,需要 `-Djava.rmi.server.hostname=localhost` 和 `-Dcom.sun.management.jmxremote.rmi.port=[...]` 来让客户端访问远程 RMI-使用已知端口而不是随机端口通过隧道的对象。 (3认同)
  • 顺便说一句,如果连接仍未建立 - 尝试添加以下 Java 系统属性 `-Djava.rmi.server.hostname=<ip>` (2认同)

小智 10

我的环境是Linux中的jboss 7.1,试图将JMC连接到我的jboss实例,最初我遇到连接被拒绝的问题 - 经过一天半的挖掘,远程JMC现在为我工作,在standalone.conf中使用以下配置:

JBOSS_MODULES_SYSTEM_PKGS="org.jboss.byteman,org.jboss.logmanager"

JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS"


JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.jboss.logmanager.LogManager"

JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/p:/apps/jboss-as-7.1.1.Final/modules/org/jboss/logmanager/main/jboss-logmanager-1.2.2.GA.jar"
JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/p:/apps/jboss-as-7.1.1.Final/modules/org/jboss/logmanager/log4j/main/jboss-logmanager-log4j-1.0.0.GA.jar"
JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/p:/apps/jboss-as-7.1.1.Final/modules/org/apache/log4j/main/log4j-1.2.16.jar"

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote=true"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=7091"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.rmi.port=7091"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"

JAVA_OPTS="$JAVA_OPTS -XX:+UnlockCommercialFeatures"
JAVA_OPTS="$JAVA_OPTS -XX:+FlightRecorder"
Run Code Online (Sandbox Code Playgroud)

  • 我想特别注意`-Dcom.sun.management.jmxremote.rmi.port=[...]`,在防火墙、SSH 隧道等情况下需要它,因为没有它,随机端口被使用RMI 提供客户端需要访问的远程对象。`-Djava.rmi.server.hostname=[...]` 也可能是必要的。 (3认同)

Sri*_*asu -8

在服务器{Ubuntu}中编辑/etc/hosts文件

127.0.1.1       server-name
Run Code Online (Sandbox Code Playgroud)

将上面的行替换为这一行

<system-ip>     server-name
Run Code Online (Sandbox Code Playgroud)

  • hirt 提供的另一个答案更有用 (7认同)