标签: jstack

jstack:目标进程没有响应

我正在运行Ubuntu服务器版,我想采取Tomcat的线程转储.

所以,我首先尝试找出哪个PID tomcat使用:

$ jps -l
5809 sun.tools.jps.Jps
Run Code Online (Sandbox Code Playgroud)

但它不在那里?

所以,我用了之后top发现了PID 5730.

然后我调用jstack来获取线程转储:

$ sudo jstack -l 5730
5730: Unable to open socket file: target process not responding or HotSpot VM not loaded
The -F option can be used when the target process is not responding
Run Code Online (Sandbox Code Playgroud)

这是怎么回事?:-(

我已经尝试按照Jstack中的描述导出CATALINA_TMPDIR,并且Jstat停止使用升级到JDK6u23但是没有改变任何东西:

$ export CATALINA_TMPDIR=/tmp
$ sudo /etc/init.d/tomcat6 restart
 * Stopping Tomcat servlet engine tomcat6
   ...done.
 * Starting Tomcat servlet engine tomcat6
   ...done.
$ sudo jstack -l 5934 // …
Run Code Online (Sandbox Code Playgroud)

java jstack thread-dump

46
推荐指数
2
解决办法
8万
查看次数

jstack - 众所周知的文件不安全

我使用32位Oracle Java 1.6.0在x86_64 CentOS 5.7上运行tomcat 5.5.

tomcat使用的JVM进程有6421 pid.Tomcat工作正常.

运行jstack时失败:

[root@mybox ~]# jstack 6421
6421: well-known file is not secure
Run Code Online (Sandbox Code Playgroud)

要获得任何合理的输出,我需要使用force选项:

[root@mybox ~]# jstack -F 6421
Attaching to process ID 6421, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 17.0-b16
Deadlock Detection:

No deadlocks found.
(...)
Run Code Online (Sandbox Code Playgroud)

问题是:

  1. 错误信息"众所周知的文件不安全"是什么意思?
  2. 什么是"知名"文件?
  3. 如果没有jstack强制选项,该命令何时/何时不起作用?

提前致谢.

java jvm jstack

42
推荐指数
4
解决办法
4万
查看次数

Jstack和没有足够的存储空间可用于处理此命令

我正在尝试在我的java应用程序上运行jstack命令.应用程序相当大,在jboss AS中运行占用大约4GB的内存.操作系统是Windows Server 2003标准版.每次我收到错误"没有足够的存储空间来处理此命令".有足够的RAM,16GB和磁盘空间.那么,有什么想法吗?

java jstack

28
推荐指数
2
解决办法
3万
查看次数

jstack -F如何影响正在运行的Java进程?

我正在尝试诊断我正在使用的Java Web应用程序(Jenkins)没有响应的问题.如果我在jstack没有-F标志的情况下运行它不会给我任何东西,但是如果我将标志放入以强制进行线程转储,不仅我得到了结果,而且应用程序开始响应并继续进行,好像什么都没发生,直到它最终再次停止响应.

jstack -F标志会做什么会影响正在运行的JVM并导致无响应的应用程序再次开始响应?

java jvm jstack

28
推荐指数
2
解决办法
2万
查看次数

Java线程转储:没有"等待锁定......"的BLOCKED线程

我很难理解我从jstack获得的在Tomcat 6上运行的Spring MVC Web应用程序的线程转储(java 1.6.0_22,Linux).

我看到阻塞线程(导致其他线程等待)自己被阻塞,但是线程转储没有告诉我为什么或者他们正在等待哪个监视器.

例:

"TP-Processor75" daemon prio=10 tid=0x00007f3e88448800 nid=0x56f5 waiting for monitor entry [0x00000000472bc000]
    java.lang.Thread.State: BLOCKED (on object monitor)
        at java.lang.Class.initAnnotationsIfNecessary(Class.java:3067)
        - locked <0x00007f3e9a0b3830> (a java.lang.Class for org.catapultframework.resource.ResourceObject)
        at java.lang.Class.getAnnotation(Class.java:3029)
        ...
Run Code Online (Sandbox Code Playgroud)

即我错过了堆栈跟踪中的"等待锁定..."行.显然线程锁定了一个Class对象,但是我不明白为什么线程本身被阻塞了.

线程转储不包含任何死锁提示.

如何识别锁定监视器?

谢谢,奥利弗

java jstack thread-dump

20
推荐指数
2
解决办法
5万
查看次数

Jstack和Jstat停止了升级到JDK6u23的工作

我们最近从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.

java debugging tomcat jstack jstat

18
推荐指数
1
解决办法
9368
查看次数

获取Java线程id和堆栈跟踪的失控Java线程

在我最繁忙的生产安装中,有时我得到一个似乎陷入无限循环的单个线程.经过大量的研究和调试后,我还没弄清楚谁是罪魁祸首,但看起来应该是可能的.以下是血腥的细节:

目前的调试说明:

1)ps -eL 18975向我展示了Linux pid问题子线程,19269

$ps -eL | grep 18975
...
PID   LWP   TTY          TIME CMD
18975 18994 ?        00:00:05 java
18975 19268 ?        00:00:00 java
18975 19269 ?        05:16:49 java
18975 19271 ?        00:01:22 java
18975 19273 ?        00:00:00 java
...
Run Code Online (Sandbox Code Playgroud)

2)jstack -l 18975表示没有死锁,jstack -m 18975不起作用

3)jstack -l 18975确实为我的所有线程(~400)提供了堆栈跟踪.示例线程堆栈(而不是问题):

"http-342.877.573.944-8080-360" daemon prio=10 tid=0x0000002adaba9c00 nid=0x754c in Object.wait() [0x00000000595bc000..0x00000000595bccb0]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on …

java debugging jstack

17
推荐指数
2
解决办法
3万
查看次数

杀-3或jstack:有什么区别?

我想得到在jboss服务器上运行的我的Web应用程序的线程转储.

我找到了两个解决我问题的方法:

  • 使用unix命令:kill -3
  • 使用JDK中存在的jstack工具.

谁能向我解释这两种方法之间的区别?

提前致谢 !

java kill jstack thread-dump

16
推荐指数
1
解决办法
4002
查看次数

jstack无法在服务器上运行

我们在服务器上使用jstack来检测java应用程序是否正在陷入僵局.它不适用于我们的Linux服务器之一.我认为O/S版本是:

$cat /etc/issue.net
Red Hat Enterprise Linux Server release 5.6 (Tikanga)
Kernel \r on an \m
Run Code Online (Sandbox Code Playgroud)

在服务器上运行的Java版本:

java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02, mixed mode)
Run Code Online (Sandbox Code Playgroud)

当我尝试:

jstack 19114
Run Code Online (Sandbox Code Playgroud)

我明白了:

19114: Unable to open socket file: target process not responding or HotSpot VM not loaded
The -F option can be used when the target process is not responding
Run Code Online (Sandbox Code Playgroud)

当我尝试:

jstack -F 19114
Run Code Online (Sandbox Code Playgroud)

我明白了:

Attaching to process ID 19114, please wait...
Debugger …
Run Code Online (Sandbox Code Playgroud)

java jstack

15
推荐指数
1
解决办法
3万
查看次数

Java线程监控.如何找出非守护进程的直播线程?

我在多线程程序中做了一些工作.我在JConsole中看到我仍然有2个非守护程序线程,但我无法确切知道哪个(线程总数超过30).Visual VM不提供此类信息.

java multithreading visualvm jconsole jstack

14
推荐指数
1
解决办法
3965
查看次数

标签 统计

java ×10

jstack ×10

thread-dump ×3

debugging ×2

jvm ×2

jconsole ×1

jstat ×1

kill ×1

multithreading ×1

tomcat ×1

visualvm ×1