2016-03-08 45 views
1

我试图生成WebLogic控制台线程转储(服务器 - > - >监控 - >主题 - >转储线程堆栈错误生成线程转储

我得到以下信息:Server must be running before thread stacks can be displayed.

但是,当我尝试使用产生kill -3 <PID>线程转储,它就会产生

OS:Centos的 的Weblogic:WebLogic Server的版本:10.3.6.0

任何人都可以p租赁帮助我理解为什么线程转储不能从控制台生成,为什么我收到消息说服务器必须正在运行。

注意:服务器处于运行状态。

+0

您确定要尝试转储到正在运行的服务器吗? 也许你正在用“kill”命令管理服务器 – devwebcl

+0

我正在获取有关应用程序线程信息的转储。我可以看到线程转储中提到的应用程序类(当我使用kill时)。 –

+0

我正在使用sun jdk。我应该使用jrockit吗?只有jrockit提供了这个功能,或者这也是为sun jdk而存在的? –

回答

0

当您从控制台执行线程转储命令时,AdminServer和受控服务器通信可能存在问题。

控制台使用WLST捕获线程转储,并在生成线程转储之前检查受管服务器状态。可能是Admin Server无法获取Managed Server的当前状态,因此您会看到该错误。

建议采用线程转储的方式是OS命令(kill -3)和JDK工具,jstack for hostpot和jrcmd用于JRockit。从控制台获取的线程转储可能没有与锁相关的信息,并且如果线程转储太长,它可能会被截断

+0

尝试使用jstack {pid}> stack-trace.log –

+0

我可以从命令行获取线程转储。要求是从weblogic控制台本身获取它。 –

+0

在这种情况下,管理服务器无法识别托管服务器的状态,因此您会看到错误。你能检查管理日志并粘贴在这里吗? –