Jstack 和 Jstat 停止升级到 JDK6u23

2022-09-02 22:06:16

我们最近从JDK6u20(Linux,32bit和64bit)升级到JDK6u23。从那时起,我们不能再使用jstackjstat工具从正在运行的进程中获取监视信息。如果我们切换回JDK6u20,一切正常。

我们正在运行Tomcat 6。根据这个论坛帖子,其他人也有同样的问题:http://forums.oracle.com/forums/thread.jspa?threadID=2151967&tstart=0

运行简单的普通Java进程并使用工具可以正常工作。

Jstack 说: 无法打开套接字文件: 目标进程没有响应或 HotSpot VM 未加载 -F 选项可以在目标进程没有响应时使用。

Jstat 说: 19799 未找到

使用JPS根本不会显示正在运行的进程,所以我想JDK6u23和JDK6u24的问题更具有一般性质。它有一个新的热点引擎。也许某些东西不能与Tomcat和Hotspot v19结合使用。

有什么想法吗?感谢您的帮助。

附言:当然,我们以同一用户的身份运行它,我们没有更改任何其他内容。只有JDK。


答案 1

在 Oracle 论坛中找到了可能的答案:

虽然6u23/24确实引入了这个问题,但它在jps中并不是一个错误。而是 VM 本身行为的更改。在 GNU/Linux 上,Jps 和类似的东西似乎只看 /tmp,但不一定是你的CATALINA_TMPDIR。如果设置或未设置,请尝试导出CATALINA_TMPDIR=/tmp,将其转换为“-Djava.io.tmpdir=/tmp”,重新启动Tomcat进程后,您应该看到Tomcat的数据为“/tmp/hsperfdata_/”,Jps很可能也会再次工作。


答案 2

请参阅 jps 即使 java 进程正在运行时也不会返回任何输出,以获取有关如何告诉 jps 或 jstat 连接到 Tomcat 的 temp-dir 的指令