在 WebSphere 中生成堆转储、Java 核心和系统转储

WebSphere 应用服务器中生成系统转储、Java 核心转储和堆转储

作为一名系统管理员,一项至关重要的任务就是在 WebSphere Application Server (WAS) 中创建系统转储、Java 核心转储和堆转储。

通常情况下,当您需要排查应用程序问题,并深入调查应用程序或底层架构中存在的故障时,才需要执行此操作。

您可以选择通过 WAS 管理控制台或命令行两种方式来实现。具体选择哪种方式取决于您的个人偏好。

通过 WebSphere 管理控制台生成转储

  • 首先,您需要登录到 DMGR 控制台。
  • 在左侧导航菜单中,找到并点击“故障排除”选项。
  • 接下来,点击“Java 转储和核心”选项。
  • 在显示的列表中,选择您需要生成转储的 JVM,然后点击相应的操作按钮。

生成的转储文件(包括 Dump 和 Core)将被存储在 WebSphere 配置文件的特定位置。您将在消息提示中看到这些文件的绝对路径。

通过命令行生成转储

  • 首先,您需要登录到 WAS 服务器。
  • 然后,进入服务器的配置文件目录,找到并进入“bin”文件夹。
  • 执行 wsadmin.sh 文件,启动 WebSphere 命令行管理工具。
[[email protected] bin]# ./wsadmin.sh
WASX7209I: Connected to process "dmgr" on node localhostCellManager01 using SOAP connector; The type of process is: DeploymentManager
WASX7029I: For help, enter: "$Help help"
wsadmin>
  • 接下来,您需要设置一个变量来存储目标 JVM 的名称。
set jvm [$AdminControl completeObjectName type=JVM,process=server1,*]

请注意:示例中使用了 ‘server1’。您需要将其替换为您实际使用的 JVM 名称。

wsadmin>set jvm [$AdminControl completeObjectName type=JVM,process=server1,*]
WebSphere:name=JVM,process=server1,platform=proxy,node=localhostNode01,j2eeType=JVM,J2EEServer=server1,version=8.5.5.0,type=JVM,mbeanIdentifier=JVM,cell=localhostCell01,spec=1.0
wsadmin>

生成堆转储

$AdminControl invoke $jvm generateHeapDump

执行此命令后,系统会生成堆转储文件,并显示该文件的完整路径。

wsadmin>$AdminControl invoke $jvm generateHeapDump
/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/./heapdump.20160618.225441.4808.0006.phd
wsadmin>

生成 Java 核心转储

$AdminControl invoke $jvm dumpThreads

此命令将生成线程转储文件,该文件也将保存在配置文件目录下。

您可以看到,生成这些转储文件非常简单,而分析这些文件则是一项非常有价值的工作。在接下来的文章中,我将分享如何分析这些转储文件以进行应用程序故障排除。敬请期待!

觉得这篇文章有用吗?欢迎分享给更多的人!