如何使用 VisualVM 和 JMX?
How to use VisualVM and JMX?
我已经尝试了书中的每一个食谱,但今天就是行不通...
我正在尝试使用 VisualVM 在远程服务器上分析我的 Java 应用程序 运行ning,所以我用谷歌搜索了一遍又一遍,寻找方法来完成这个,我最终得到了这个解决方案:
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 看到他 运行ning:
java 21947 root 9u IPv6 1811434 0t0 TCP *:7192 (LISTEN)
java 26376 root 14u IPv6 1844518 0t0 TCP *:9199 (LISTEN)
此外,我可以测试该端口在网络上是否可见:
现在,当我尝试在我的机器中的 VisualVM 中打开连接时(它也可以 ping jmx 服务器)发生了这种情况:
我一定是太笨了,这个世界上的每个人都能把这个东西 运行宁除了我。该死的...
编辑: 我安装了 wireshark 以了解引擎盖下发生的事情,所以我看到了这个。只要我在 VisualVM 中添加一个远程 IP,wireshark 就会开始检测这个重复的 activity:
但是,如果我尝试添加一个新的 JMX 连接并要求他连接,wireshark 甚至不会抓取该连接尝试的一个数据包。
在我看来,VisualVM 甚至没有尝试连接,尽管给出了错误消息 "Cannot connect"...!!这到底是怎么回事?
请使用以下 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
希望这会有所帮助。
按照以下步骤操作。
1)去远程机器开启X11转发,
2) 在 windows
安装 XMING
3) 在远程机器中启动可视化虚拟机,GUI 将出现在您的 windows xming.
4) 而不是 IP 使用 localhost 并使用相同的端口号。
如果上述步骤不起作用,则表示配置有问题。
如果上述步骤工作正常,则转到 iptables 并确保端口 9199 对外部世界开放。
以及使用 java -Djava.rmi.server.hostname=YOUR_IP
启动程序
有关详细信息,请参阅此 link
使用这些选项启动您的服务:
-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”地址。
我已经尝试了书中的每一个食谱,但今天就是行不通...
我正在尝试使用 VisualVM 在远程服务器上分析我的 Java 应用程序 运行ning,所以我用谷歌搜索了一遍又一遍,寻找方法来完成这个,我最终得到了这个解决方案:
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 看到他 运行ning:
java 21947 root 9u IPv6 1811434 0t0 TCP *:7192 (LISTEN)
java 26376 root 14u IPv6 1844518 0t0 TCP *:9199 (LISTEN)
此外,我可以测试该端口在网络上是否可见:
现在,当我尝试在我的机器中的 VisualVM 中打开连接时(它也可以 ping jmx 服务器)发生了这种情况:
我一定是太笨了,这个世界上的每个人都能把这个东西 运行宁除了我。该死的...
编辑: 我安装了 wireshark 以了解引擎盖下发生的事情,所以我看到了这个。只要我在 VisualVM 中添加一个远程 IP,wireshark 就会开始检测这个重复的 activity:
但是,如果我尝试添加一个新的 JMX 连接并要求他连接,wireshark 甚至不会抓取该连接尝试的一个数据包。
在我看来,VisualVM 甚至没有尝试连接,尽管给出了错误消息 "Cannot connect"...!!这到底是怎么回事?
请使用以下 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
希望这会有所帮助。
按照以下步骤操作。
1)去远程机器开启X11转发,
2) 在 windows
安装 XMING
3) 在远程机器中启动可视化虚拟机,GUI 将出现在您的 windows xming.
4) 而不是 IP 使用 localhost 并使用相同的端口号。
如果上述步骤不起作用,则表示配置有问题。
如果上述步骤工作正常,则转到 iptables 并确保端口 9199 对外部世界开放。
以及使用 java -Djava.rmi.server.hostname=YOUR_IP
有关详细信息,请参阅此 link
使用这些选项启动您的服务:
-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”地址。