当前位置: 首页 > 面试题库 >

jstack:目标进程无响应

翟黎明
2023-03-14
问题内容

我正在运行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

这是怎么回事?:-(

我已经尝试按照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

更新:

我也尝试过,sudo -u tomcat6 jstack -l -F 5730 >threaddumpexceptions2.txt但这只给我带来了控制台上的大量异常。


问题答案:

我通过做两件事使它工作:

  1. 更改为: sudo -u tomcat6 jstack -J-d64 -m pid
  2. 用Sun的原始sun-6-jdk和sun-6-jre软件包替换了OpenJDK

第1部分的说明: 我切换到64位模式,sudo以Tomcat用户的身份使用和运行命令。

注意: 第2部分可能不是必需的。对于某些用户来说,第1部分就足够了。实际上,尝试首先仅添加sudo命令。它可能已经成功了。



 类似资料:
  • 我想对我的Java-JMeter机器进行线程转储。在我的Jmeter机器中,我可以看到许多线程在测试计时后没有关闭和堆积。为了进行更多的调试,我尝试进行线程转储(使用“jstack-pid>>fileae.txt”命令)。但该命令在24小时后仍在运行,尽管它创建了一个空文本文件。为什么我不能对java进程进行线程转储。

  • 问题内容: 我正在尝试使用http客户端通过为单个主机设置最大连接来访问服务器 HttpParams httpParam = httpclient.getParams(); HttpConnectionParams.setSoTimeout(httpParam,SOCKET_TIMEOUT); 那就是我们使用连接池来实现http持久性。 我们偶尔会收到此错误: 有谁知道如何解决这个问题? 我们也将

  • 问题内容: 我在linux(ubuntu64位)上运行jmockit测试时得到。Java版本是1.7.0_51。该JDK来自Oracle。使用ant运行测试(可能不相关) 请参阅堆栈跟踪。 在IBMJRE上运行jMockit测试时,它似乎与AttachNotSupportedException有关。但是,这是在IBM jre上。 问题答案: 暂时解决。 添加到jvm参数解决了该问题。 此处在htt

  • 今天我发现我的应用程序无法访问,然后我登录我的服务器,我发现应用程序的线程是正常的,但是CPU负载太高了。 然后,我想使用命令,但它指出。现在我发现GC日志停留在中,没有其他日志。 然后,我使用了命令,奇怪的事情发生了,CPU正常了,我的服务器也正常了,GC日志也正常了,第一行是,jstack结果的可运行线程都是GC线程,像

  • 问题内容: 我正在使用apache http客户端来测试我的WS。我已经在球衣上写了一个WS。该WS的URL是 用URL调用这个WS我写了一个方法如下 现在,当我运行程序并将URL传递给此函数时,我在行中得到了异常 异常如下 现在,如果我使用WS网址并使用任何浏览器访问它,我都会得到预期的结果,但我想知道我的Apache HTTP客户端代码出了什么问题。 问题答案: 我从这里浏览了链接,并得到以下

  • 我使用maven远程资源插件从工件中获取一些资源,还需要捆绑一些资源以用于另一个项目。 我在默认部分(不在配置文件中)将maven-Remote te-resources-plugin绑定到捆绑目标。我将maven-Remote te-resources-plugin绑定到配置文件中的流程目标。 我的问题是,在使用概要文件时,我没有获得共享资源(我没有获得target\maven shared a