如何在 Visual VM 中远程连接 Spring 启动应用程序?

How to connect Spring Boot application remotely in Visual VM?

我是 Visual VM 的新手,如何在 Visual VM 中远程连接到 Spring 启动应用程序?

多个实例 运行 作为 java -jar app.jar 具有随机端口。如何从 Visual VM 连接,我有远程系统的 root 访问权限。我需要启用任何安全配置吗?

在本地系统中,应用程序会自动显示,但当我输入远程系统 IP 地址时,它会提示 Add JMX connectionAdd jstatd connection

我们需要指定远程 IP ADDRESS 并公开监听 PORT 而 运行 jar。

语法:

java 
-Dcom.sun.management.jmxremote=true 
-Dcom.sun.management.jmxremote.port=<PORT> 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false 
-Djava.rmi.server.hostname=<IP_ADDRESS>
-Dcom.sun.management.jmxremote.rmi.port=<PORT> 
-jar app-1.0.0-SNAPSHOT.jar 

示例:侦听端口为6001并且可用于远程ip地址192.168.0.23

java -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=6001 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.0.23 -Dcom.sun.management.jmxremote.rmi.port=6001 -jar app-1.0.0-SNAPSHOT.jar 

有关设置 Visual VM 的更多详细信息https://github.com/M-Thirumal/installation_guide/blob/master/visualVm/visualvm_remote_set_up.md

我在 Spring Boot 时也遇到了这个难题。但我没有使用罐子。我将 jmx 参数传递给 maven 以分析应用程序,而无需先构建 jar。

mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Xdebug -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.rmi.port=9010 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=localhost"

有关详细信息,我记录了我的步骤 here