将Windows上的JConsole与Linux上的远程Java Springboot应用程序连接时,连接失败

时间:2019-01-24 06:34:29

标签: java linux spring-boot jmx jconsole

我正在使用以下命令在装有Java 1.8 的 RHEL服务器上启动Java SpringBoot应用程序:-

java -jar App.jar --spring.profiles.active=dev -Xms96m -Xmx128m -XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:loggc.log 
-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=5901
-Dcom.sun.management.jmxremote.rmi.port=5901
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.local.only=false 
-Djava.rmi.server.hostname=localhost

罐子成功启动后,已分配一个 PID ,我想监视用于堆利用的PID 。因此,我试图通过在Windows环境下使用JConsole 并通过使用Putty使用端口转发将Linux上的JMX端口与Windows上的端口绑定来实现这一目标。

但是由于JRMP连接失败,我无法成功连接。

有一天可以让我了解我可能做错了什么,或者是否有更好的方法来分析Linux环境中的堆利用率。

我尝试通过以下方式访问它:jconsole 5901,但它在远程端点上显示了非JRMP服务器。

1 个答案:

答案 0 :(得分:1)

参数顺序错误。这些参数在您的main方法中以args形式提供,但是Java运行时并不关心它们。

java -h
Usage: java [-options] class [args...]
           (to execute a class)
   or  java [-options] -jar jarfile [args...]
           (to execute a jar file)

使用正确的顺序,Java运行时将选择参数而不是您的应用程序。

java -Xms96m -Xmx128m -XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:loggc.log 
-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=5901
-Dcom.sun.management.jmxremote.rmi.port=5901
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.local.only=false 
-Djava.rmi.server.hostname=localhost
-jar App.jar --spring.profiles.active=dev