我有一个Web应用程序部署到远程树脂服务器,它已打开JMX.
我可以telnet到远程服务器即
franz@see:/tmp$ telnet <remote-ip> 5555
Trying <remote-ip>...
Connected to <remote-ip>.
Escape character is '^]'.
??sr5javax.management.remote.message.HandshakeBeginMessage?,???6profilestLjava/lang/String;Lversionq~xppt1.0^]
telnet> q
Connection closed.
Run Code Online (Sandbox Code Playgroud)
但我无法使用我的JConsole连接到它
$JAVA_HOME/bin/java -cp $JAVA_HOME/lib/jconsole.jar:$JAVA_HOME/lib/tools.jar:pm-common/lib/jmxremote_optional-1_0_1_3.jar sun.tools.jconsole.JConsole service:jmx:jmxmp://<remote-ip>:5555
Run Code Online (Sandbox Code Playgroud)
我用以下java版本尝试了这个,但是我在两个实例上都遇到了"连接失败".
## where JAVA_HOME=/opt/java/64/jdk1.5.0_22
java version "1.5.0_22"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_22-b03)
Java HotSpot(TM) 64-Bit Server VM (build 1.5.0_22-b03, mixed mode)
## where JAVA_HOME=/opt/java/64/jdk1.6.0_17
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) 64-Bit Server VM (build 14.3-b01, mixed mode)
Run Code Online (Sandbox Code Playgroud)
你们有没有想过如何调试这个(即找出问题所在)?
我正在运行tomcat 6.0.18作为Windows服务.在服务小程序中,jvm配置为默认值,即它使用JRE的jvm.dll.
我试图用JConsole监视此应用程序,但无法在本地连接到它.我添加了参数-Dcom.sun.management.jmxremote(在使用start.bat脚本启动tomcat时有效).但是jvm似乎没有拿起参数.
我目前正在使用com.sun.management.jmxremote.*属性启动我的Java VM,以便我可以通过JConsole连接到它以进行管理和监视.不幸的是,它会侦听机器上的所有接口(IP地址).
在我们的环境中,通常情况下,同时在一台机器上运行多个Java VM.虽然可以告诉JMX监听不同的TCP端口(使用com.sun.management.jmxremote.port),但最好让JMX使用标准的JMX端口并绑定到特定的IP地址(而不是所有的IP地址).
这样可以更容易地找出我们通过JConsole连接到哪个VM(因为每个VM有效地"拥有"自己的IP地址).有没有人想出如何让JMX监听单个IP地址或主机名?
我试图运行JConsole来分析正在运行的进程使用的内存,但JConsole并没有向我显示进程,即使我完全确定它正在运行(除此之外它还应该在进程列表中显示JConsole但是它没有).
有谁知道为什么它不显示任何进程?
干杯
Windows更新后,我的jps,jconsole和jvisualvm不再工作了.
Jps给了我进程ID,但它告诉我 process information unavailable
而且我无法像以前那样使用jvisualvm连接到这些进程.
我正在运行1.6.0_22 jre.
我过去已经遇到过这个问题,尝试过这个技巧,并且它有效.但这次,运气不好,没有用.
编辑:
我找到了一个解决方案:在我的临时文件夹中,我确实销毁了该hsperfdata_<username>文件夹.显然我的用户名存在问题.该文件夹名为hsperfdata_myname.在通过调用jps进行销毁和重新创建之后,它被称为hasperfdata_MYNAME.
很奇怪.
是否可以通过命令行启动受监视资源的凭据到JConsole.我现在已经得到了这样的命令.
${jdk.home}/bin/jconsole.exe
-J-Djava.class.path=${jdk.home}/lib/jconsole.jar;
${jdk.home}/lib/tools.jar;${weblogic.home}/server/lib/wljmxclient.jar
-J-Djmx.remote.protocol.provider.pkgs=weblogic.management.remote
service:jmx:iiop://127.0.0.1:7510/jndi/weblogic.management.mbeanservers.runtime
Run Code Online (Sandbox Code Playgroud)
有谁知道这是否可能以及这些凭证应放在何处.
谢谢.
我编写了一个程序,使用2个线程打印1到200的数字.
现在我想使用JConsole监视这个程序.
基本上我想学习如何使用JConsole来监视应用程序.
我搜索谷歌但找不到有用的东西.
我怎么能做到这一点?
当我开始jconsole.exe在bin文件夹中.它要求输入主机名和端口号.在我的情况下,我猜没有.有人可以指导.
我在多线程程序中做了一些工作.我在JConsole中看到我仍然有2个非守护程序线程,但我无法确切知道哪个(线程总数超过30).Visual VM不提供此类信息.
我们已经分发了几年前在JDK 5上开发的Web应用程序.
JMX将如何帮助这个应用程序?
1)它会帮助我监控性能(内存,CPU和网络和磁盘IO)吗?
2)如果是,那么应用程序部署在多个服务器中,如何在一个仪表板中进行监控?
3)我是否必须对现有应用程序进行任何新代码更改,还是可以在不更改代码的情况下进行监视?
4)除了性能监控外,我们还能做些什么?因为名称是管理扩展(MX)我们可以管理什么以及如何管理?看来主要目标不是监控,而是管理?
我从Oracle网站http://docs.oracle.com/javase/tutorial/jmx/overview/why.html提供的教程中无法了解JMX .似乎一些商业代表准备本教程而不是技术人员.
任何人都可以帮助我理解这个JMX的东西,您的努力是真诚的感谢.
谢谢,你的朋友.
我正在使用Jconsole来监视Java应用程序.内存选项卡显示不同的堆和非堆内存
这些术语有什么区别.另外,请提供一些信息 - 如何通过监视这些参数来查找应用程序行为中的异常.
jconsole ×10
java ×8
jmx ×5
command-line ×1
connect ×1
heap-memory ×1
jstack ×1
jvm ×1
performance ×1
rmi ×1
tomcat ×1
visualvm ×1