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



我正在我的RHEL服务器上启动Java SpringBoot应用程序,并安装了java 1.8,使用以下命令:

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

当 jar 成功启动时,已分配了一个 PID,我想监视该 PID 的堆利用率。因此,我试图通过在Windows环境中使用JConsole并使用putty使用Port Forward将Linux上的JMX端口与Windows上的端口绑定来实现这一目标。

但是我无法成功连接,因为 JRMP 连接失败。

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

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

参数的顺序是错误的。这些参数在 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

相关内容

  • 没有找到相关文章

最新更新