Tim*_*imo 46 java jstack thread-dump
我正在运行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 // 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
Run Code Online (Sandbox Code Playgroud)
更新:
我也试过,sudo -u tomcat6 jstack -l -F 5730 > threaddumpexceptions2.txt但它只给了我很多控制台上的例外.
Tim*_*imo 69
我通过做两件事来完成它:
sudo -u tomcat6 jstack -J-d64 -m pid第1部分的说明:我切换到64位模式,使用sudo并以Tomcat用户身份运行命令.
注意:第2部分可能没有必要.对于一些用户来说,似乎第1部分就足够了.实际上,首先尝试添加sudo命令.它可能已经成功了.
小智 31
我认为你需要运行jstack作为运行Tomcat进程的同一个用户.另请注意,jps仅返回当前用户的进程.您可以通过使用sudo运行jps或作为Tomcat进程用户来获取Tomcat进程的pid.
此错误报告也可能有用:https://bugs.launchpad.net/ubuntu/+source/sun-java6/+bug/597098
| 归档时间: |
|
| 查看次数: |
77299 次 |
| 最近记录: |