如何在WebSphere挂起/停止时自动获取线程转储()

本文概述

  • JVM停止时执行线程转储
  • 挂线时进行线程转储
线程转储对于Java应用程序故障排除至关重要。如果你从事与性能相关的工作, 内存泄漏, 调试等, 那么通常会要求你进行线程和堆转储。
你可以手动进行转储, 但是如果你想自动进行转储, 则可以按照以下方法进行。以下演示基于
以下演示基于WebSphere 9, 但是过程将类似于其他WAS版本。
JVM停止时执行线程转储 在某些情况下, 每当JVM停止时, 你都希望进行线程转储。当你不确定谁或如何停止JVM时, 这将很有用。
【如何在WebSphere挂起/停止时自动获取线程转储()】要配置它;
  • 登录到WebSphere管理控制台
  • 导航到服务器> > 服务器类型> > WebSphere应用程序服务器
  • 进入JVM并在服务器基础结构下展开” Java和进程管理”
  • 单击流程定义
  • 单击其他属性> > 定制属性下的” Java虚拟机”
  • 单击新建, 然后输入名称为
com.ibm.ws.runtime.dumpShutdown

  • 值为真
  • 点击确定
如何在WebSphere挂起/停止时自动获取线程转储()

文章图片
  • 查看并保存配置
现在, 只要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 –检测到时生成转储。价值是真实的。
如何在WebSphere挂起/停止时自动获取线程转储()

文章图片
以上配置将在线程挂起600秒时生成转储, 而WebSphere将每300秒监视一次线程。
进行转储后, 你可以分析并解决应用程序问题。我希望这有帮助。

    推荐阅读