【发布时间】:2015-09-04 17:50:37
【问题描述】:
我有 websphere application server v 7 over windows server,我想生成线程转储,因为我有线程挂起,但是当我尝试使用 wsadmin 获取 java 核心时出现错误,所以我想生成 java 核心文件,如linux 使用 kill -3 。
Windows 服务器中是否有类似的东西?
【问题讨论】:
标签: windows websphere-7 thread-dump
我有 websphere application server v 7 over windows server,我想生成线程转储,因为我有线程挂起,但是当我尝试使用 wsadmin 获取 java 核心时出现错误,所以我想生成 java 核心文件,如linux 使用 kill -3 。
Windows 服务器中是否有类似的东西?
【问题讨论】:
标签: windows websphere-7 thread-dump
就像 ObiWanKenobi 提到的那样,您最好的选择可能是通过部署管理器管理控制台。来自 IBM 的支持站点:
将 com.ibm.websphere.threadmonitor.dump.java 属性设置为 true:
应用服务器:
名称:com.ibm.websphere.threadmonitor.dump.java
值:真
节点代理:
名称:com.ibm.websphere.threadmonitor.dump.java
值:真
【讨论】:
总之,没有好的答案。
最接近的方法是使用 SendSignal 之类的东西。有关更多信息,请参阅Can I send a ctrl-C (SIGINT) to an application on Windows? 问题。不幸的是,SendSignal 不能在所有版本的 Windows 上可靠地工作(请参阅我的 Send ctrl-break to java process on 64-bit Windows ala sendsignal on 32-bit 问题)。
如果您愿意编写一些自定义代码,您可以编写一个使用attach API 的Java 程序来加载调用Dump API 的Java 代理。 (我怀疑IBM Support Assistant 内置了这个功能,但是我已经太久没有尝试在这一点上具有权威性了。)
【讨论】:
当 SystemOut.log 中有“挂起”线程消息时,您可以让 JVM 执行线程转储: 在 JVM 的 Administration > Custom Properties 下添加 com.ibm.websphere.threadmonitor.dump.java=true。
【讨论】: