Monitoring 无法将远程主机连接到VisualVM
我是Java新手,在将远程主机连接到Monitoring 无法将远程主机连接到VisualVM,monitoring,jmx,visualvm,Monitoring,Jmx,Visualvm,我是Java新手,在将远程主机连接到JVisualVM时遇到了一个问题 java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false application_name 我已经搜索了互联网,并按照上面提到的所有步骤进行了操作,
JVisualVM
时遇到了一个问题
java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false application_name
我已经搜索了互联网,并按照上面提到的所有步骤进行了操作,但仍然无法解决这个问题。我遵循的步骤是:
java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false application_name
$JAVA\u HOME/bin
中创建了一个jstatd.all.policy
文件,从而在远程服务器上启动了jstatd。该文件包含:grantcodebase”文件:${java.home}/./lib/tools.jar“{permission java.security.AllPermission;}代码>
java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false application_name
Jstatd
作为Jstatd-J-Djava.security.policy=Jstatd.all.policy
java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false application_name
java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false application_name
JVisualVM
的实例,当我添加远程主机时,它连接了,但我无法看到任何Java进程java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false application_name
谁能帮我一下吗
java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false application_name
谢谢 要连接到远程VM您必须使用特定选项启动该远程VM:
java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false application_name
java
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9000
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
class
启动VM后,转到您的VisualVM并执行以下操作:
java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false application_name
可以找到有关Java监视和管理平台的更多详细信息。我在连接Glassfish应用程序服务器时遇到了类似的问题。请查看对我有效的解决方案,因为它们对您同样有效:
java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false application_name
- 尝试在应用程序上设置:
-Djava.rmi.server.hostname=*远程服务器外部IP地址*java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false application_name
java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false application_name
- 如果防火墙阻塞是一个问题,那么我建议尝试使用SSH隧道进行XMing(设置起来很简单)。如果设置时遇到问题,请参阅以下说明:
使用XMing的最大优点是,它几乎总是在启用SSH时工作。您只需将VisualVM文件放在远程主机上,然后从命令行运行它。XWindow将在本地计算机上显示VisualVM窗口
java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false application_name
java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false application_name
您需要使用指向服务器外部IP或主机名的附加选项启动jstatd:
java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false application_name
statd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=my_server_ip/hostname
回答基于:以下是执行此操作的步骤:
java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false application_name
mvn exec:java-Djava.rmi.server.hostname=-Dexec.args=“-pr 1099-ph 1100-pv 1101”
(用于“jstatd”类型的连接)(如果远程主机的主机名与您从本地网络看到的主机名不匹配,则仅指定-Djava.rmi.server.hostname
)-Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.port=1102-Dcom.sun.management.jmxremote.rmi.port=1102-Djava.rmi.server.hostname=
(用于“JMX”类型连接)(与前面关于-Djava.rmi.server.hostname的注释相同)
1099
、1100
、1101
和1102
1099
,您可以在“高级设置”中对此进行更改):1102
”,然后选中“不需要SSL连接”VisualVM
连接到jstatd端口,步骤如下:
java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false application_name
步骤1:创建启动jstatd.sh
并复制以下内容:
java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false application_name
nohup jstatd -p 1099 -J-Djava.security.policy=<(echo 'grant codebase "file:${java.home}/../lib/tools.jar" {permission java.security.AllPermission;};') &
步骤3:启动jstatd:
java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false application_name
$ sh start-jstatd.sh
步骤4:在VisualVM
中添加远程主机:
java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false application_name
java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false application_name
步骤5:将JMX连接添加到远程主机,如下图所示,然后单击确定按钮:
编辑您的问题更简单……我使用您提到的步骤执行了java应用程序,但它仍然没有显示我添加的远程主机下的任何java进程。当我尝试添加jmx连接时,日志文件中会出现以下错误:**connect(服务:jmx:rmi:///jndi/rmi://10.88.36.146:9000/jmxrmi)java.net.ConnectException:连接被拒绝:**检查两台计算机上的防火墙…可能不允许通过端口9000进行通信…我已禁用本地计算机上的防火墙,远程主机上的IP表设置为:
链输入(策略接受)目标保护选项源目标链转发(策略接受)目标保护选项源目标链输出(策略接受)target prot opt source destination
google搜索一下如何查看允许哪些端口
java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false application_name