无法将远程主机连接到VisualVM

rus*_*shi 21 monitoring jmx visualvm

我是Java的新手,我遇到了将远程主机连接到的问题JVisualVM.

我搜索了互联网,并按照那里提到的所有步骤,但仍然无法解决问题.我遵循的步骤是:

  1. 我首先在远程服务器上创建一个jstatd.all.policy文件,然后在远程服务器上启动了jstatd $JAVA_HOME/bin.该文件包含:grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission;};

  2. 我开始Jstatdjstatd -J-Djava.security.policy=jstatd.all.policy

  3. 我在远程主机上启动了Java应用程序:

    java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false application_name
    
    Run Code Online (Sandbox Code Playgroud)
  4. 然后我开始作为JVisualVM我的本地机器的实例,当我添加远程主机时,它已连接但我无法看到任何Java进程.

任何人都可以帮我这个.

谢谢.

Jac*_*ski 14

连接到Glassfish应用程序服务器时遇到类似的问题.查看对我有用的解决方案,因为它们对您来说可能是相同的:

  • 尝试设置您的应用程序:

    -Djava.rmi.server.hostname =*Remote_Server_External_IP_Address*

提到的IP地址应该是服务器外部IP(可能听起来很傻,但它对我有用).我的主要问题是JMX指向localhost和循环.在配置文件中,应将确切的IP地址设置为远程主机.我将其描述为"问题2"在我的博客中:处理连接问题

  • 如果防火墙阻塞是一个问题,那么我建议使用SSH隧道尝试XMing(这很容易设置).如果您在设置时遇到问题 ,请遵循以下说明:
    使用Xming远程使用VisualVM(我的博客)使用XMing的最大优点是,当启用SSH时,它几乎总能工作.您只需将VisualVM文件放在远程主机上并从命令行运行它.XWindow将在您的本地计算机上显示VisualVM窗口.

  • 它有可能是VisualVM问题 - 尝试使用其他工具来验证错误.我推荐JConsole.它的工作方式类似于VisualVM,我也在我的博客上描述了细节


小智 11

您需要使用指向服务器的外部IP或主机名的附加选项启动jstatd:

statd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=my_server_ip/hostname
Run Code Online (Sandbox Code Playgroud)

答案基于:https://java.net/projects/visualvm/lists/users/archive/2010-03/message/8


dav*_*orp 7

要连接到远程VM,您必须使用特定选项启动该远程VM:

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

VM启动后,转到VisualVM并执行以下操作:

  1. 文件 - >添加JMX连接
  2. 键入:yourHostName:9000,然后单击"确定"
  3. 在左侧,您将添加JMX连接,双击它就可以了!

有关Java监视和管理平台的更多详细信息,请参见此处.


Ant*_* O. 5

以下是执行此操作的步骤:

  1. 以这种方式在远程主机中启动ejstatdmvn exec:java -Djava.rmi.server.hostname=<remote_host_name> -Dexec.args="-pr 1099 -ph 1100 -pv 1101" (在 ejstatd 文件夹中) :(用于“jstatd”类型连接)(仅-Djava.rmi.server.hostname在远程主机的主机名与您从本地网络看到的主机名不匹配时指定)
  2. 使用这些附加 Java 参数启动 Java 应用程序:(-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=1102 -Dcom.sun.management.jmxremote.rmi.port=1102 -Djava.rmi.server.hostname=<remote_host_name>用于“JMX”类型连接)(与上一点的注释相同-Djava.rmi.server.hostname
  3. 打开远程主机上的这 4 个端口并使它们可供本地计算机使用:1099110011011102
  4. 启动 JVisualVM
    1. 右键单击“远程”>“添加远程主机...”,然后在“主机名”中输入您的远程主机名(如果不使用端口1099,可以在“高级设置”中更改)
    2. 右键点击刚刚创建的远程主机>“添加JMX连接...”,<remote_host_name>:1102在“连接”输入中输入“ ”,勾选“不需要SSL连接”
    3. 您的 Java 进程将出现两次:一次来自“jstatd”连接类型,另一次来自“JMX”连接类型。

免责声明:我是开源ejstatd工具的作者。