如何收集管理控制台线程堆栈信息
1 业务场景
当管理控制台界面出现加载实例特别慢,群集控制器界面刷新实例特别慢,补丁下载任务一直卡住等场景时,需要收集控制台线程堆栈分析。
2 解决方案
首先我们要知道管理控制台进程包括控制台图形界面admin_client进程以及控制台后台adminserver进程,在linux环境下,这两者都以java进程运行,如下图所示:
可通过执行ps -ef |grep admin_client 命令找到控制台界面的进程号是13761。
可通过执行ps -ef |grep adminserver 命令找到控制台后台的进程号是13597。
而在windows操作系统中,可在任务管理器-详细信息页签中找到两个javaw.exe的进程,即控制台的admin_client进程和adminserver进程,比如这里进程号是552和18816。这里不需要分辨出哪个是admin_client进程,哪个是adminserver进程,因为两个进程的堆栈信息都需要收集。
如果您有需要,想分辨出哪个是admin_client进程,哪个是adminserver进程,可通过选中其中一个javaw.exe进程,右键-打开文件所在位置,可进入到对应的jdk/bin目录下,如下图所示位置,找到jconsole.exe双击运行。
接着会弹出这个窗口,将鼠标在对应的进程号上停留1秒钟,可显示出该pid号对应哪个进程,如下图,18816对应的是admin_client进程,552对应的是adminserver进程。
3 操作步骤
接下来收集管理控制台线程堆栈:
一、Linux环境操作步骤:
1)执行ps -ef |grep osgi命令,找到当前EAS环境安装位置,如下图所示。
2)进入对应的jdk/bin目录下,执行命令 ./jstack 13597 > adminserver.txt 即可收集pid为13597进程对应的堆栈信息,13597为adminserver进程对应的Pid号,adminserver.txt为文件名,您可以自己修改为其他文件名,如1.txt、13597.txt。
如果执行该命令报错The -F option can be used when the target process is not responding,则需要加 -F参数强制执行。
3)最终生成的adminserver.txt文件放在jdk/bin目录下,这个也就是javacore堆栈信息。同理,admin_client进程的javacore堆栈一样的方法收集即可。
二、Windows环境操作步骤
1)打开任务管理器-详细信息页签,找到控制台对应的javaw.exe进程,选中其中一个,右键-打开文件所在位置。
2)即可进入对应的jdk/bin目录,如下图所示位置。
直接在这里输入cmd回车,即可打开命令窗口。
也可以通过以下方式打开命令窗口:
进入对应的jdk/bin目录下
3)执行命令 .\jstack 552 > adminserver.txt 回车(注意这里的 \ 方向与linux环境不同),即可收集pid为552进程对应的堆栈信息,adminserver.txt为文件名,您可以自己修改为其他文件名,如1.txt、552.txt。
4)最终生成的adminserver.txt文件放在jdk/bin目录下,这个也就是adminserver进程的javacore堆栈信息。
5)同理,admin_client进程的javacore堆栈一样的方法收集即可。
如何收集管理控制台线程堆栈信息
本文2024-09-22 20:27:31发表“eas cloud知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-eas-113756.html