不同操作系统,不同jdk类型的dump日志收集方法汇总
说明:
收集dump日志之前,建议先收集一份javacore日志,收集javacore日志可以参考链接https://vip.kingdee.com/article/235722845257316352 不同操作系统类型,不同jdk类型的dump日志收集方法略有差异(jdk类型的判断方法可以参考本文的第5部分),详细过程如下:
1 应用服务器为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日志收集方法汇总
本文2024-09-22 20:28:01发表“eas cloud知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-eas-113807.html