jstack:目标进程没有响应
我正在运行Ubuntu服务器版,我想要采取一个Tomcat的线程转储。
所以,我第一次试图找出哪个PID tomcat使用:
$ jps -l 5809 sun.tools.jps.Jps
但它不在?
所以,我用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
这是怎么回事? 🙁
我已经尝试导出CATALINA_TMPDIR Jstack和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 // new PID after restart 5934: 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
更新:
我也试过sudo -u tomcat6 jstack -l -F 5730 > threaddumpexceptions2.txt
但是它只给了我很多例外的控制台。
我做了两件事情:
- 更改来电:
sudo -u tomcat6 jstack -J-d64 -m pid
- 用Sun原来的sun-6-jdk和sun-6-jre软件包取代了OpenJDK
第1部分说明:我切换到64位模式,使用sudo
并以Tomcat用户身份运行命令。
注意:第2部分可能没有必要。 对于一些用户来说,第1部分就够了。 实际上,试着首先添加sudo
命令。 它可能已经诀窍。
我想你需要像运行Tomcat进程的用户一样运行jstack。 还要注意,jps只返回当前用户的进程。 通过使用sudo运行jps或作为Tomcat进程用户,您将获得Tomcat进程的pid。
这个错误报告也可能是有用的: https : //bugs.launchpad.net/ubuntu/+source/sun-java6/+bug/597098
@Valmar,我在这里find相同的主题。 无法获得线程转储? 任何想法为什么我的应用程序块
看起来解决方法是sudo -u tomcat6 kill -3 <pid>
。
这也适用于我:
sudo -u tomcat6 kill -3 pid
它看起来没有任何反应,但是当你在日志中查看堆栈在那里。 如果你不期待他们,他们看起来像例外。
我发现使用'ps -eo pid,user,command |'这样的东西很有用 grep java'来查找正在使用的实际java命令,然后使用该目录查找匹配的jstack等。
# ps -eo user,command | grep '[j]ava' | cut -d' ' -f1 someuser /usr/lib/jvm/java/bin/java # /usr/lib/jvm/java/bin/java -version java version "1.6.0_45" Java(TM) SE Runtime Environment (build 1.6.0_45-b06) Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)
所以它的64位,以“someuser”运行。 su到那个用户并运行从同一个目录运行jstack等。 (即/ usr / lib / jvm / java / bin / jstack
在使用各种不同的Java安装/实现的服务器上时很有用。
尝试切换到处理用户,然后使用jstack:
sudo -u {处理用户} jstack>转储
我有同样的问题,但没有解决scheme为我工作:
jstack <pid> jstack -J-d64 -m <pid> sudo -u <user> jstack ...
我终于将JDK从jdk1.6.0_24升级到了jdk1.7.0_67,并且每件事情都起作用了。
对于有此问题的Tomcat用户,请检查您的catalina.out日志文件。
我有同样的问题“22693:无法打开套接字文件:目标进程没有响应或热点虚拟机未加载”。 我放弃了,试图findclosures之前发生的事情,但是之后在日志文件中有jstack输出。