如何连接到 WSL2 内运行的 JMX 服务器

psz*_*mus 6 java jmx visualvm windows-subsystem-for-linux wsl-2

我正在使用以下参数运行 Java 应用程序,以启用 JMX 服务器的远程连接:

-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=9998
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
Run Code Online (Sandbox Code Playgroud)

我可以通过 VisualVM 成功连接到该 JMX 服务器,方法是将新的 JMX 连接添加到地址:<HOSTNAME>:9998

但是当我在 Windows Subsystem for Linux 2 (WSL2) 中运行该应用程序时,Visual VM 无法连接到localhost:9998连接失败

据我所知,应用程序在 WSL2 中侦听的每个端口也在主机(Windows 本身)中打开,我可以使用Win+R -> cmd -> telnet localhost 9998(连接成功)进行检查。另外,我正在 WSL2 中运行一个 nginx 实例,我可以使用localhost.

Dav*_*ham 5

我无法使用上述任何建议让 Windows jconsole 连接到在 WSL2 中运行的 JVM,但是现在可以使用Windows 11 的 Linux GUI 支持在 WSL2 中运行 Linux jconsole 。工作完美。


小智 0

这似乎是 Java 的普遍问题。

https://github.com/microsoft/WSL/discussions/6253

对我有用的解决方法是使用 JMX 服务器在 WSL2 中监听“0.0.0.0”而不是“127.0.0.1”。