JLM*_*JLM 6 java jmx rmi visualvm
很抱歉这个问题必须经过多次询问,但我无法成功解决问题.我已经阅读了很多博客,网站,论坛......并且在我的案例中找不到任何解决方案.
案例: 我需要将我的盒子上的VisualVM连接到远程服务器(tomcats,weblogics)以进行性能/线程/内存监控.这些服务器安装在受防火墙保护的(物理或虚拟)计算机上.防火墙中可以使用大间隔的端口,但可以使用,但不是所有端口.
测试
-Djava.rmi.server.hostname=[hostname]
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=[port]
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
我已经预先设置了主机名,因为从我的网络中,主机名和服务器的IP地址与远程服务器网络中的主机名和IP地址不同.
没有成功,VisualVM似乎总是在寻找未知的服务器.
尝试在服务器端从可访问的端口(-p选项)启动jstatd从我的盒子(此端口上的telnet工作),但是当使用jstatd端口在此主机上启动visualVM时,它似乎仍在等待无法访问的东西...... .Jps连接到此远程主机的行为相同.
尝试在网络保护较少的服务器上使用相同的工具,并且它可以工作.所以我看到了我的盒子和服务器之间的连接,它们是在不同于我指定的jstatd的端口上完成的.据我所知,第一次通信需要这个端口(握手类型),真正的通信是在其他端口上完成的,但不可预测(例如:60305,55197,...).我不确定我很清楚RMI是如何工作的.
拜托,帮助我,我疯了!
不幸的是,JMX尝试打开您配置的端口以外的端口.就在昨天,我成功通过JMX连接到防火墙后面的tomcat.两个棘手的部分是:
放入一个名为jmxremote.accessin 的文件CATALINA_HOME/conf,其中包含以下行:
monitorRole readonly
controlRole readwrite
Run Code Online (Sandbox Code Playgroud)server.xml通过一个特殊的tomcat监听器(/ lib中需要catalina-jmx-remote.jar)来设置jmx将使用的端口:
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"
rmiRegistryPortPlatform="9009" rmiServerPortPlatform="9010" />
Run Code Online (Sandbox Code Playgroud)然后在防火墙上打开这两个端口.有用.但那只是为了tomcat.
另一种选择是使用ssh隧道.简而言之 - 您通过SSH连接并将其配置为将一些本地端口(运行jmx客户端的位置)转发到隧道另一侧的某些端口.
参考文献:
| 归档时间: |
|
| 查看次数: |
7292 次 |
| 最近记录: |