Java VisualVM无法显示/列出我的Tomcat Java进程

13

我正在使用jdk64,我的Java版本是1.6.0_24。 我在Windows Server 2008上以管理员身份运行Tomcat Java进程和VisualVM进程。

Tomcat正在使用-Xmx7196m,而jvisualvm正在使用-Xms24m-Xmx256m。 这可能是原因吗?


“Java VisualVM无法显示/列出我的Tomcat Java进程”这句话的确切含义是什么? - Salah
1
在“应用程序”视图中的“本地”节点下,我的进程未列出。 - Kuldeep Jain
3个回答

22

您需要添加JMX参数以启用与您的应用程序的JMX连接,请添加以下参数:

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=8484
-Dcom.sun.management.jmxremote.ssl=false

接下来需要手动添加你的Tomcat进程,在本地主机节点上右键 -> 添加JMX连接 -> 输入端口号 -> 确定

这样,你的Tomcat进程就会出现在本地主机节点下列表中。


谢谢,它起作用了。默认情况下,如果我捕获堆转储,它们会进入 C:\Users\kuldeep\AppData\Local\Temp\visualvm.dat\localhost_PID 目录。我可以更改此位置吗?我的 C:\ 驱动器没有足够的空间。 - Kuldeep Jain
我关闭并重新启动了VisualVM和Tomcat。现在当我尝试在同一端口上添加JMX连接时,它会给出错误:jmx connection service:jmx:rmi:///jndi/rmi://localhost:8484/jmxrmi已经存在于localhost:8484。但是我该如何打开现有的连接? - Kuldeep Jain
在本地主机节点下查找,您会找到Tomcat进程,您不必每次都添加它。 - Salah
1
不,肯定不在那里。此外,我在VisualVM的右下角看到“计算描述…”已经进行了一段时间。 - Kuldeep Jain
重新启动机器并重新启动Tomcat和JVisualVM解决了这个问题。 - Kuldeep Jain
显示剩余3条评论

1

VisualVM无法找到Java的原因是由于操作系统进程权限。

如果您使用与Java应用程序相同的用户和安全上下文启动VisualVM,则会看到它:VisualVM将获得对套接字、/proc文件系统等的访问权限...

为了解决操作系统安全问题,您可以通过附加sys属性来公开您的Java应用程序:

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=[...PORT...]
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=localhost

java.rmi.server.hostname 是一项重要的安全措施,可防止外部连接到您的应用程序 JMX。如果您需要远程连接,只需通过 SSH 隧道 传递端口即可。


0

我们的应用服务器是 JBOSS 6.1.0.final,当在 run.conf.bat 文件中添加以下行时,服务器本身无法启动:

-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=8484 -Dcom.sun.management.jmxremote.ssl=false

这似乎不是答案。如果它是答案,您可以详细说明一下吗? - Robert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接