18

我们最近从 JDK6u20(Linux,32 位和 64 位)升级到了 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 结合使用。

任何的想法?帮助表示赞赏。

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

4

2 回答 2

12

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

虽然 6u23/24 确实引入了这个问题,但这不是 jps 中的错误。而是虚拟机本身行为的变化。在 GNU/Linux Jps 等似乎只看 /tmp 但不一定看你的 CATALINA_TMPDIR。如果设置与否,尝试导出 CATALINA_TMPDIR=/tmp 转换为“-Djava.io.tmpdir=/tmp”,重新启动 Tomcat 进程后,您应该看到 Tomcat 的数据为“/tmp/hsperfdata_/”,Jps 很可能再次工作。

于 2011-03-03T22:14:46.637 回答
4

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

于 2011-03-07T15:30:50.867 回答