我有一个配置了JMXRemote参数的tomcat实例。本地VisualVM能够在CPU上获取采样器,但不能用于内存。内存按钮显示为灰色,上面写着:“内存采样:不可用。无法连接到目标应用程序。请确保应用程序在支持的JDK 6或JDK 7上运行”
JMXRemote参数:
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9086
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
Tomcat JDK版本:
JDK1.6.0.30
VisualVM版本:
Version: 1.6.0_30 (Build 1320-110325); platform 110131-9c8b3bfb3a1e
System: Windows Server 2008 R2 (6.1) , amd64 64bit
Java: 1.6.0_30; Java HotSpot(TM) 64-Bit Server VM (20.5-b03, mixed mode)
Vendor: Sun Microsystems Inc., http://java.sun.com/
Environment: Cp1252; en_US (visualvm)
Userdir: C:\Users\Administrator\AppData\Roaming\.visualvm\7
Clusters: C:\Program Files\Java\jdk1.6.0_30\lib\visualvm\platform
C:\Program Files\Java\jdk1.6.0_30\lib\visualvm\visualvm
C:\Program Files\Java\jdk1.6.0_30\lib\visualvm\profiler
Tomcat版本:
Tomcat 6.0.32
我在win server 2008上运行VisualVM和Tomcat。我做错了什么?
答案 0 :(得分:7)
之前我遇到过同样的问题。 您必须从jvisualvm主页下载该版本,对吗? 不要这样做! 如果您使用新的jdk 1.7,VisualVM已经打包在您的jdk文件夹中。 使用此版本,内存样本不会有任何问题。
答案 1 :(得分:5)
This blog post让我相信JVisualVM和Tomcat的临时目录需要相同才能使内存采样工作。关于这篇文章的评论之一:
必须将temp目录设置为JVisualVM使用的目录,可以从VisualVM系统属性选项卡(java.io.tmpdir)中找到该目录。一旦我正确设置了CATALINA_TMPDIR目录,这就非常有效。
答案 2 :(得分:1)
我会检查VisualVM的版本与JVM完全相同。
VisualVM非常特定于版本。我认为它仍处于相当快速的发展阶段。
(作为答案发布,因为它可能是解决方案)
答案 3 :(得分:1)
我刚遇到同样的问题,上面的答案解决了我的问题,但我花了一段时间才弄明白。为了防止其他人仍然遇到麻烦并最终在线程中结束,我使用的JDK是通过Eclipse配置的weblogic服务器的一部分,而不是我单独安装的JDK。我还是一名初级程序员,在我开始查看我的eclipse设置并验证我的已安装JRE之前,我并没有将2和2放在一起。
从weblogic jdk中运行jvisualvm.exe,一切正常。
答案 4 :(得分:0)
我遇到过与JVisualVM类似的问题,我甚至问了一个关于它的问题here
一些见解/建议:
我会仔细检查你是否在同一台机器上安装了64位jvms以及32位jdks(即使它们没有运行且所有环境变量都已正确定义),我有时会读到某个地方它驱动JVisualVM疯狂:)(是的,我知道这对我们来说听起来不合适,java开发人员)
如果它不起作用,只需卸载您拥有的所有jdks,只安装所需的1个。它可以解决这个问题。
我希望它会帮助你解决这个问题,毕竟彼得说这些事情是新的和不断发展的
答案 5 :(得分:0)
以下是针对类似问题的解决方案:https://stackoverflow.com/a/16330238/715483
您可以通过
解决此错误$ ssh -Y user @ remotemachine
$ wget http://java.net/projects/visualvm/downloads/download/release135/visualvm_135.zip
$ unzip visualvm_135.zip
$ cd visualvm_135 / bin
$ ./visualvm
这个visualvm实例将是全功能的,包括内存和CPU采样。
在此处详细了解:http://shahriarinia.blogspot.com/2013/05/java-cpumemory-heap-usage-monitoring.html
答案 6 :(得分:0)
如果您的JRE是,请确保您的VirtualVM / JDK是32位副本。如果您使用的是Eclipse,请检查Installed JRE部分中选定的JRE。
答案 7 :(得分:0)
我有同样的问题。
我总是将tomcat作为服务启动,并通过jmx连接将其与visualvm连接。
什么时候纠正了catalina.bat:
set JAVA_OPTS=%JAVA_OPTS%
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=9090
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
并使用startup.bat启动它,visualvm自动确定tomcat,并且内存采样处于活动状态。
答案 8 :(得分:0)
我遇到了同样的问题,但环境不同。我的服务器是Linux机器,客户端是Windows 7机器,但问题是一样的。
解决方案是在同一台机器上运行jvisualvm,并使用运行目标应用程序的同一用户。如果我与其他用户(例如root)运行jvisualvm,则内存按钮变为灰色。
答案 9 :(得分:0)
首先,JMX should be enabled。添加尚未激活JMX所需的链接命令行环境变量。
应将环境变量CATALINA_TMPDIR
设置为与JVisualVM匹配,如“本地”>“ VisualVM”的“系统属性”选项卡中所示。您可以通过双击左侧“应用程序”窗格中带有“ VisualVM”标签的条目来打开它。
可以通过搜索环境,“为您的帐户编辑环境变量”来设置环境变量。新建...>输入名称和值。
如果您希望VisualVM的临时目录位于其他位置,则必须从命令行启动VisualVM并添加一个参数。
C:\Program Files\Java\jdk1.8.0_65\bin>jvisualvm.exe -J-Djava.io.tmpdir=C:\Users\You\Temp