不同操作系统,不同jdk类型的dump日志收集方法汇总

栏目:eas cloud知识作者:金蝶来源:金蝶云社区发布:2024-09-22浏览:1

不同操作系统,不同jdk类型的dump日志收集方法汇总

说明:

收集dump日志之前,建议先收集一份javacore日志,收集javacore日志可以参考链接https://vip.kingdee.com/article/235722845257316352  不同操作系统类型,不同jdk类型的dump日志收集方法略有差异(jdk类型的判断方法可以参考本文的第5部分),详细过程如下:


应用服务器为linux操作系统,oracle jdk类型

步骤如下

(1) 确认要收集实例的进程号是多少

说明:一般是收集有问题的那个实例的dump日志,具体是收集哪个实例dump日志以实际情况和需求为准。


某个实例对应的进程号pid可以在“应用服务器控制台--应用服务器页签”上看到。如果在应用服务器控制台页签上看不到对应实例的进程号pid或者进程号pid不准确的话,可以通过ps -ef | grep java | grep 具体的server名称  找到进程号pid,然后通过pwdx  进程号pid 进行确认

(例如下图要找server1对应的进程号码:ps -ef   |  grep java  | grep server1  | more 

pwdx 12241  就可以确认12241就是实例1对应的进程号pid


(2) 进入jdk的bin目录: cd eas/oracle-jdk1.7/bin


(3) ./jvisualvm调出图形界面

(说明:oracle-jkd1.8/bin目录下的jvisualvm工具无法打开图形界面,建议使用oracle-jkd1.7/bin目录下的jvisualvm工具)


(4) 双击选择对应实例的进程号pid--Monitor--Heap Dump生成dump日志

点了Heap Dump之后就开始生成dump日志了,一般需要一分钟左右,系统卡慢的情况下可能需要更长的时间。

下图的/tmp/visualvm.dat/localhost_12241/heapdump-1621320672975.hprof文件就是生成的dump日志。

(5)保存dump日志

生成的dump日志需要另存一份(复制一份放到磁盘空间比较大的目录下。df -h可以查看磁盘空间大小),有可能这个图形界面关了之后,放在/tmp目录下的dump日志就没有了。

这个日志比较占用空间,分析完了之后可以将这个文件删除掉。/tmp/visualvm.dat/localhost_12241/目录下如果还有这个文件的话也建议删除腾出空间。


(6)补充说明

补充:如果系统无法打开图形界面,可以通过jdk的bin目录下的jmap工具收集dump日志,但是这个工具会使实例重启(停止),整个收集的过程需要半个小时以上,需用户同意的情况下操作 具体使用方法如下:

cd  eas/oracle-jdk1.7/bin

./jmap -dump:live,format=b,file=dump.hprof  进程号pid  或者

./jmap -F -dump:live,format=b,file=dump.hprof 进程号pid  #-F表示强制生成


例如:./jmap -F -dump:live,format=b,file=dump.hprof 12241

生成的文件默认在eas/server/profiles/server#/bin目录下,文件名就是dump.hprof  ,名字也可以自己取,扩展名最好为.hprof  


2 应用服务器为windows系统,jdk类型为oracle jdk

步骤如下

(1) 确认要收集实例的进程号是多少

说明:一般是收集有问题的那个实例的dump日志,具体是收集哪个实例dump日志以实际情况和需求为准。


某个实例对应的进程号pid可以在“应用服务器控制台--应用服务器页签”上看到。

如果在应用服务器控制台页签上看不到对应实例的进程号pid或者进程号pid不准确的话,可以在cmd命令行模式下执行netstat -ano  | grep  实例的http端口号 进行查询 。第一行末尾的数字就是这个实例对应的进程号pid


例如,需要查询server1对应的进程号pid, 可以通过“应用服务器控制台--应用服务器页签”查看,应用服务器控制台页签上看不到对应实例的进程号pid或者进程号pid不准确的话,可以通过netstat -ano | grep 6888进行查看,23168就是server1对应的进程号pid



(2) 进入jdk的bin目录:

打开eas\oracle-jdk1.7\bin文件夹


(3) 双击jvisualvm.exe调出图形界面

(说明:oracle-jkd1.8/bin目录下的jvisualvm工具无法打开图形界面,建议使用oracle-jkd1.7/bin目录下的jvisualvm工具)


(4) 双击选择对应实例的进程号pid--Monitor--Heap Dump生成dump日志

跟应用服务器“linux操作系统,oracle jdk类型”操作方法类似,这里不再赘述。生成的日志随着图形界面的关闭同样会没有,所以同样需要复制一份到其他文件夹下,分析完成后可将该dump日志删除。

如果图形界面工具无法打开的话,同样可以通过jmap工具进行收集但是这个工具会使实例重启(停止),整个收集的过程需要半个小时以上,需用户同意的情况下操作 具体使用方法如下

cd  eas\oracle-jdk1.7\bin

具体盘符:

.\jmap -dump:live,format=b,file=dump.hprof  进程号pid  或者

.\jmap -F -dump:live,format=b,file=dump.hprof  进程号pid  #-F表示强制生成

例如下图:

生成的文件默认在eas\server\profiles\server#\bin文件夹下,文件名就是dump.hprof  ,名字也可以自己取,扩展名最好为.hprof  


3 应用服务器为linux系统,jdk类型ibm jdk

可以通过网页方式或者linux命令方式进行收集

方法一:通过网页方式进行收集

浏览器中输入http://serverip:port/easportal/tools/dump.jsp?type=heapdump   

(serverip是应用服务器的ip,port是实例http端口号,可从管理控制台应用服务器页签查看到,这种方式收集的日志以heapdump开头,在eas/server/profiles/server#/bin目录下)


浏览器中输入http://serverip:port/easportal/tools/dump.jsp?type=systemdump   

该方式收集会让实例重启,需跟用户提前沟通好

(serverip是应用服务器的ip,port是实例http端口号,可从管理控制台应用服务器页签查看到,这种方式收集的日志以开头,在eas/server/profiles/server#/bin目录下


方法二:通过命令行方式进行收集

步骤如下:

(1) 确认要收集实例的进程号是多少

某个实例对应的进程号pid可以在“应用服务器控制台--应用服务器页签”上看到。

如果在应用服务器控制台页签上看不到对应实例的进程号pid的话或者进程号pid不准确的话,可以通过ps -ef | grep java | grep 具体的server名称  找到进程号pid,然后通过pwdx  进程号pid 进行确认

(例如要找server1对应的进程号码:ps -ef   |  grep java  | grep server1  | more 

pwdx 12241  就可以确认12241就是实例1对应的进程号pid


(2)kill -6 进程号pid

该方式收集会让实例重启,需跟用户提前沟通好

收集的日志以core开头,默认在eas/server/profiles/server#/bin目录下



4 应用服务器为windows系统,jdk类型ibm jdk

浏览器中输入http://serverip:port/easportal/tools/dump.jsp?type=heapdump   

(serverip是应用服务器的ip,port是实例http端口号,可从管理控制台应用服务器页签查看到,这种方式收集的日志以heapdump开头,在eas/server/profiles/server#/bin目录下)


浏览器中输入http://serverip:port/easportal/tools/dump.jsp?type=systemdump   

该方式收集会让实例重启,需跟用户提前沟通好

(serverip是应用服务器的ip,port是实例http端口号,可从管理控制台应用服务器页签查看到,这种方式收集的日志以开头,在eas/server/profiles/server#/bin目录下)


5 补充:如何判断jdk的类型?

(1)针对linux系统

root用户下执行如命令  (如果是其他用户启动的EAS Cloud,也可以在那个用户下执行)

ps -ef | grep osgi  

cd /var/kingdee/eas/oracle-jdk1.8/bin

 ./java -version

上图显示的是oracle jdk ,如果是ibm的jdk的话,会有ibm(IBM)关键字

说明:

ps -ef|grep osgi这个命令是查看控制台对应的后台进程,直接执行就可以确定是什么类型的jdk, 但是有些用户可能会修改jdk的目录名字,所以需要进入jdk目录后执行./java -version进行确认


(2)针对windows系统

任务管理器-->详细信息-->找到javaw的进程—打开文件位置-->找到jdk的文件夹-->然后在cmd命令行下进入jdk文件夹,执行.\java -version查看

(一般一个控制台对应2个javaw进程)

cd E:\kingdee\eas75\eas\ibm-jdk\bin

e:

.\java -version


截图如下:


上图显示的是ibm jdk ,因为有(IBM)关键字



不同操作系统,不同jdk类型的dump日志收集方法汇总

说明:收集dump日志之前,建议先收集一份javacore日志,收集javacore日志可以参考链接https://vip.kingdee.com/article/235722845257316352...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息