Windows下使用JConsole监控WSL2里运行的Java应用

请先参考WSL2与Windows间的网络互访获取正确的WSL2的IP Address: 。本文提到的Java应用被部署在Ubuntu 20.04.3 LTS系统上。

在JConsole通过:连接WSL2里的Java应用时会遇到以下错误而不能成功连接:

连接失败

其根本原因是Bug ID: JDK-6209663 jconsole won't connect to remote JVM on Linux (java.com)

有两种解决办法:

  1. 如Sun Bug中所描述的方法:
    通过修改/etc/hosts文件使hostname -i返回
    默认情况下hostname -i可能返回127.0.1.1,编辑/etc/hosts文件,将127.0.1.1替换成就可以了。
    如:

127.0.1.1 MyMateBookXPro.localdomain

替换成:

MyMateBookXPro.localdomain

  1. 启动Java应用时绑定JMX Server的hostname (推荐,-Djava.rmi.server.hostname参数非常重要,一定要有)
    要解决这个问题一个办法是在启动Java应用时通过-Djava.rmi.server.hostname参数绑定JMX Server的hostname为,下面是一个Java应用的启动参数示例:
$ java -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=9998 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=172.27.170.146 -jar yourJavaApp.jar

上面命令会绑定JMX server的hostname为172.27.170.146,端口为9998.

使用方法1或2,在Windows下的JConsole里通过:就可以正常连接了。

成功连接

你可能感兴趣的:(Windows下使用JConsole监控WSL2里运行的Java应用)