本文概述
线程转储对于Java应用程序故障排除至关重要。如果你从事与性能相关的工作, 内存泄漏, 调试等, 那么通常会要求你进行线程和堆转储。
你可以手动进行转储, 但是如果你想自动进行转储, 则可以按照以下方法进行。以下演示基于
以下演示基于WebSphere 9, 但是过程将类似于其他WAS版本。
JVM停止时执行线程转储
在某些情况下, 每当JVM停止时, 你都希望进行线程转储。当你不确定谁或如何停止JVM时, 这将很有用。
要配置它;
- 登录到WebSphere管理控制台
- 导航到服务器>>服务器类型>> WebSphere应用程序服务器
- 进入JVM并在服务器基础结构下展开” Java和进程管理”
- 单击流程定义
- 单击其他属性>>定制属性下的” Java虚拟机”
- 单击新建, 然后输入名称为
com.ibm.ws.runtime.dumpShutdown
- 值为真
- 点击确定
- 查看并保存配置
现在, 只要JVM停止, 就会生成堆转储。
我停止了JVM, 并且可以在概要文件路径下的WAS服务器上看到以下javacore文件。
-rw-r--r--. 1 root root 3179348 Nov 28 22:49 javacore.20161128.224916.4926.0001.txt
-rw-r--r--. 1 root root 3124208 Nov 28 22:49 javacore.20161128.224924.4926.0002.txt
挂线时进行线程转储
如果你遇到挂起线程的问题, 并且当前你手动进行转储, 则可以自动执行此操作。
通过执行基本配置, 只要线程挂了已配置的定时, WebSphere就会生成转储。
- 登录到WAS控制台并进入相应的JVM
- 展开”服务器基础结构”下的”管理”, 然后单击”自定义属性”
- 添加以下三个属性
com.ibm.websphere.threadmonitor.threshold-在线程挂起配置的时间时生成转储。值以秒为单位。
com.ibm.websphere.threadmonitor.interval –线程监视器应多久检查一次挂起的线程。以秒为单位的值。
com.ibm.websphere.threadmonitor.dump.java –检测到时生成转储。价值是真实的。
以上配置将在线程挂起600秒时生成转储, 而WebSphere将每300秒监视一次线程。
进行转储后, 你可以分析并解决应用程序问题。我希望这有帮助。
评论前必须登录!
注册