繁体   English   中英

如何使用VisualVM和JMX?

[英]How to use VisualVM and JMX?

我已经尝试了书中的每一个食谱,但今天的事情根本不适用......

我正在尝试使用VisualVM来配置我在远程服务器上运行的Java应用程序,所以我用Google搜索并用Google搜索并搜索了这样做的方法,我最终得到了这个解决方案:

java -Dcom.sun.management.jmxremote \
  -Dcom.sun.management.jmxremote.port=9199 \
  -Dcom.sun.management.jmxremote.local.only=false \
  -Dcom.sun.management.jmxremote.authenticate=false \
  -Dcom.sun.management.jmxremote.ssl=false \
  -jar bin/felix.jar

运行这个会让我JMX运行我猜,所以我可以看到他在9199运行:

java      21947        root    9u  IPv6 1811434      0t0  TCP *:7192 (LISTEN)
java      26376        root   14u  IPv6 1844518      0t0  TCP *:9199 (LISTEN)

此外,我可以测试该端口在Web上是否可见:

在此输入图像描述

现在,当我尝试在我的机器中打开VisualVM中的连接(也可以ping jmx服务器)时,会发生这种情况:

在此输入图像描述

在此输入图像描述

在此输入图像描述

我一定是如此愚蠢,以至于这个世界上的每个人都能把这个东西运转起来但是我。 该死的...

编辑:我安装了wireshark来了解引擎盖下发生了什么,所以我看到了这个。 一旦我在VisualVM中添加远程IP,wireshark就开始检测这个重复的活动:

在此输入图像描述

但是,如果我尝试添加新的JMX连接并要求他连接,则wireshark甚至不会抓取该连接尝试的单个数据包。

在此输入图像描述

在我看来VisualVM甚至没有尝试连接,尽管给出错误消息“无法连接”...... !! 这到底是怎么回事?

使用以下选项启动您的服务:

-Djava.rmi.server.hostname=193.163.XXX.XXX
-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=9199 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false

然后你可以使用jvisualvm或jconsole只有“193.163.XXX.XXX:9199”地址。

请按照以下步骤操作。
1)转到远程机器打开X11转发,
2)在Windows中安装XMING
3)在远程机器中启动可视VM,GUI将进入你的windows xming。
4)而不是IP使用localhost并使用相同的端口号。

如果上述步骤不起作用,则表示配置有问题。
如果上面的步骤工作正常,那么去iptables并确保端口9199对外部世界开放。 以及使用java -Djava.rmi.server.hostname=YOUR_IP启动程序

有关详细信息,请参阅此链接

请使用以下JVM选项:

-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=<PORT> -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=<IP>

在VisualVM中使用以下连接:

service:jmx:rmi:///jndi/rmi:/<IP>:<PORT>/jmxrmi

希望这会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM