有没有人能使用远程JMX JConsole来工作?
看来我过去从未做到这一点。目前,我知道它不起作用。
但是,我们启动了Java流程:
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=6002 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
我可以远程登录到端口,并且"那里有东西"(即,如果我不启动该进程,则什么也没有答案,但是如果我这样做,它确实可以),但是我无法让JConsole来填写IP和港口。
似乎它应该是如此简单,但是没有错误,没有噪音,什么也没有。就是行不通。
有人知道这个热门提示吗?
解决方案
我们在Linux上运行吗?也许管理代理绑定到本地主机:
http://java.sun.com/j2se/1.5.0/docs/guide/management/faq.html#linux1
在测试/调试/诊断远程JMX问题时,请首先始终尝试连接包含MBeanServer的同一主机(即localhost),以排除网络和其他非JMX特定的问题。
我们可能遇到防火墙问题。 "问题"是我们指定的端口不是唯一使用的端口,它为RMI使用了1个甚至2个以上的端口,而这些端口可能已被防火墙阻止。
如果我们使用默认的RMI配置,则不会预先知道其中一个额外的端口,因此我们必须打开可能无法使服务器管理员满意的大范围端口。
有一种解决方案不需要打开大量端口,但是,我已经使用组合的源代码片段和技巧来使其工作
http://forums.sun.com/thread.jspa?threadID=5267091链接不再起作用
http://blogs.oracle.com/jmxetc/entry/connecting_through_firewall_using_jmx
http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html
甚至有可能设置ssh隧道并使其正常工作:-)
添加-Djava.rmi.server.hostname ='<host ip>'
对我来说解决了这个问题。
我在挂钩到运行Linux Redhat ES3的tomcat的Windows上运行JConsole / JVisualVm。
使用以下命令禁用数据包筛选对我有用:
/usr/sbin/iptables -I INPUT -s jconsole-host -p tcp --destination-port jmxremote-port -j ACCEPT
其中,jconsole-host是运行JConsole的主机名或者主机地址,而jmxremote-port是为远程管理设置的com.sun.management.jmxremote.port的端口号。