如何在JVM上激活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
Run Code Online (Sandbox Code Playgroud)
我可以telnet到端口,"有东西"(也就是说,如果我不启动过程,没有任何答案,但如果我这样做,它确实),但我无法让JConsole工作填写IP和港口.
似乎它应该如此简单,但没有错误,没有噪音,没有任何东西.只是不起作用.
有人知道这个热门提示吗?
所以我在远程盒子上看着一个带有jmap的堆,我想强制垃圾收集.如果不突然进入jvisualvm或jconsole和朋友,你怎么做?
我知道你不应该在强制垃圾收集的实践中 - 你应该弄清楚为什么堆很大/正在增长.
我也意识到System.GC()实际上并没有强制进行垃圾收集 - 它只是告诉GC你希望它发生.
话虽如此,有办法轻松做到这一点吗?我失踪了一些命令行应用程序?
是否有任何库允许我从shell脚本调用JMX MBean方法.我们通过JMX公开了一些操作/管理命令,我们可以让我们的管理员使用JConsole或VisualVM,但有些任务最好留给自动化.在那个自动化中,我们希望能够在运行的服务器上调用JMX MBean方法,最好是从shell脚本调用.
我正在尝试打开与远程计算机上运行的Java应用程序的JMX连接.
应用程序JVM配置有以下选项:
我可以localhost:1088
使用jconsole或jvisualvm 进行连接.但是我无法使用xxx.xxx.xxx.xxx:1088
远程计算机进行连接.
服务器之间或操作系统之间没有防火墙.但是为了消除这种可能性我telnet xxx.xxx.xxx.xxx 1088
和我认为它连接起来,因为控制台屏幕变成了空白.
两台服务器都是Windows Server 2008 x64.尝试使用64位JVM和32位,都不起作用.
我想了解一个JMX服务URL.
service:jmx:rmi://192.168.30.10:1234/jndi/rmi://192.168.30.10:2344/jmxrmi
Run Code Online (Sandbox Code Playgroud)
如果有人能帮助我理解这一点,那就太好了.
谢谢
我希望能够远程连接到暴露了JMX的Java服务,但是它被防火墙阻止了.我曾尝试使用ssh本地端口转发,但连接失败.看看wireshark,看来当你尝试连接jconsole时,它想要在连接到被防火墙阻止的端口9999之后通过一些短暂的端口连接.
有没有办法让jconsole只通过9999连接或使用代理?是这篇文章仍然是最好的解决办法?或者,我错过了什么?
我正在尝试使用jConsole连接到远程tomcat JMX实例.但无法成功连接.任何的想法?
我在远程tomcat中包含以下选项catalina.sh
:
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=9004 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false"
Run Code Online (Sandbox Code Playgroud) 出于某种奇怪的原因,我无法使用VisualVM
或连接jconsole
到JMX.
用于启动要监视的VM的参数:
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=1100
我检查过,我可以从本地和远程telnet到这个端口.
尽管如此,在花费了相当多的时间尝试之后,VisualVM或jconsole仍无法连接.
REMOTE MACHINE with JMX (debian)
java version "1.6.0_33"
Java(TM) SE Runtime Environment (build 1.6.0_33-b03-424-11M3720)
Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03-424, mixed mode)
MY WORKSTATION (OS X)
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)
Run Code Online (Sandbox Code Playgroud)
问题是什么?
我在Centos6上使用JDK7运行我的Java程序.我使用以下选项启用JMX:
JAVA_OPTS="${JAVA_OPTS} -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9123 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.local.only=true"
Run Code Online (Sandbox Code Playgroud)
当我检查打开哪些端口时,我发现了2个额外的随机端口:
netstat -plunt | grep java
tcp 0 0 :::9123 :::* LISTEN 13295/java
tcp 0 0 :::59927 :::* LISTEN 13295/java
tcp 0 0 :::59928 :::* LISTEN 13295/java
Run Code Online (Sandbox Code Playgroud)
请注意,每次重启仅配置的端口9123保持不变,另外两个端口会更改值.
netstat -plunt | grep java
tcp 0 0 :::9123 :::* LISTEN 13331/java
tcp 0 0 :::59932 :::* LISTEN 13331/java
tcp 0 0 :::59933 :::* LISTEN 13331/java
Run Code Online (Sandbox Code Playgroud)
什么是2个额外端口以及为什么打开它们?
如何配置2个额外的随机端口?
如何配置::ffff:127.0.0.1
将在JMX打开的所有端口之前显示?
为什么在与JConsole连接时不使用一个端口?
添加以澄清答案
不幸的是,附加的随机端口仍然打开为了提醒您,我使用Centos 6.我的Tomcat设置看起来像这样(Tomcat不部署任何应用程序):
CATALINA_OPTS="${CATALINA_OPTS} -XX:+DisableAttachMechanism -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.local.only=true -Djava.rmi.server.useLocalHostname=true -Djava.rmi.server.useCodebaseOnly=true -Dcom.sun.management.jmxremote.port=9123 -Dcom.sun.management.jmxremote.rmi.port=9123" …
Run Code Online (Sandbox Code Playgroud)