EAS Cloud应用服务器为windows,jdk类型为ibm jdk 实例对应的java程序导致CPU过高的处理办法

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

EAS Cloud应用服务器为windows,jdk类型为ibm jdk 实例对应的java程序导致CPU过高的处理办法


步骤一:查看java进程占用cpu的高低情况

任务管理器-->详细信息-->cpu排序

下图是java进程占用cpu比较高的情况(55),一般持续比较高的就需要分析处理





步骤二:判断jdk类型

1.任务管理器中-->详细信息-->选中占用cpu高的这个java进程-->右键-->打开文件所在的位置  可以进入jdk的bin文件夹


可以看到本例的jdk是ibm jdk,版本是1.7  (如果是oracle jdk的话,如下画红线的地方会是oracle字样)

一般这样就可以确定本例是ibm jdk,版本是1.7了,如果要100%确定的话,还可以按如下的步骤进行:

在jdk的bin文件夹下,输入cmd后按回车键,  再执行 .\java -version

注意:要在jdk的bin文件夹下,输入cmd后按回车键,此时cmd进入的才是jdk的bin文件夹

确认此时cmd是进入jdk的bin文件夹

执行.\java   -version

下图是使用了ibm的jdk,64bit 1.7版本 

本文主要介绍EAS Cloud应用服务器为windows,jdk类型为ibm jdk 实例对应的java程序导致CPU过高的处理办法

jdk类型为oracle jdk 实例对应的java程序导致CPU过高的处理办法请参考链接:

EAS Cloud应用服务器为windows,jdk类型为Oracle jdk 实例OOM导致CPU过高的处理办法

EAS Cloud应用服务器为windows,jdk类型为Oracle jdk 实例非OOM导致CPU过高的处理办法




步骤三:判断是OOM还是非OOM导致cpu高

由于ibm-jdk下的jvm日志需要用工具打开才能确定是OOM还是非OOM,并且windows环境下也无法打印实例的各个线程占用CPU的情况。故windows环境下非OOM导致实例宕机的话可能还需要更换成oracle jdk后待问题重新后再收集日志。所以可以先不管是OOM还是非OOM,直接进行步骤四收集日志,分析日志后再决定后续操作。





步骤四:日志收集

主要是收集对应实例的javacore日志和heapdump日志。


1.确认导致CPU持续高消耗的实例是哪一个,该实例的http端口号是多少

任务管理器-->详细信息-->cpu排序找到占用cpu高的那个java进程对应的进程号

下图中占用cpu高的java进程的pid进程号码是40064


在控制台--"应用服务器"页签上查看进程号对应哪个实例

由下图可知该40064的进程号码对应的实例是server1(有时候找不到对应的进程号码,需要刷新一下),其http端口号是6888注意这里是http端口号,不是rpc端口号


2.收集javacore日志和heapdump日志

在收集之前,可以在实例的bin文件夹下(eas\server\profiles\server#\bin\)检查是否有修改日期是最近的core开头的日志,如果有最近几天core开头的日志的话,则可能前几天也发生CPU持续高的情况,并且自动产生了日志,本次CPU持续高的原因很可能跟前几天的原因一致。可以将最新的那一个core上传到ftp服务器上。这个文件占用空间大,分析完成后可以将这个core日志删除。但如果要100%确认本次CPU持续高消耗的原因或没有最近的core日志。则需要进行后面的步骤手动收集日志。


下图画红框日志是修改日期为2023/11/1的core开头的日志


(1)收集javacore日志(javacore日志就是实例的线程堆栈)

在浏览器中输入如下地址后按回车键,然后输入账号密码就可以收集。

http://serverip:httpport/easportal/tools/dump.jsp?type=javadump 

serverip是应用服务器的ip地址,httpport是导致CPU持续高消耗的实例http端口号



案例截图如下:

输入地址http://serverip:httpport/easportal/tools/dump.jsp?type=javadump 

(在本例中,serverip即应用服务器的ip地址是172.21.51.65,导致CPU持续高消耗的实例http端口号是6888。故需要使用http://172.21.51.65:6888/easportal/tools/dump.jsp?type=javadump  进行收集)



输入账号密码


出现Finish dump java就证明收集成功了



生成的日志在对应实例的bin目录下,文件是javacore开头的日志。本例导致CPU持续高消耗的实例是server1。故在eas\server\profiles\server1\bin文件夹下,现场要根据实际情况而定。可以按"修改日期"排序找到产生的javacore文件。

这个文件比较小,可以云之家发送。


(2)收集heapdump日志

(收集这个日志花的时间会比较长,收集过程中可能导致实例宕机,建议跟现场沟通好后再操作。)

在浏览器中输入如下地址后按回车键,然后输入账号密码就可以收集。

http://serverip:port/easportal/tools/dump.jsp?type=heapdump  

(serverip是应用服务器的ip地址,httpport是导致CPU持续高消耗的实例http端口号)



案例截图如下:

输入地址 http://serverip:port/easportal/tools/dump.jsp?type=heapdump 

(在本例中,serverip即应用服务器的ip地址是172.21.51.65,导致CPU持续高消耗的实例http端口号是6888。故需要使用http://172.21.51.65:6888/easportal/tools/dump.jsp?type=heapdump  进行收集)



输入账号密码:


出现Finish dump heap就证明收集成功了


生成的日志在对应实例的bin目录下,文件是heapdump开头的日志。本导致CPU持续高消耗的实例是server1。故在eas\server\profiles\server1\bin文件夹下,现场要根据实际情况而定。可以按"修改日期"排序找到产生的heapdump文件。(这个文件比较大,可以压缩下上传到ftp服务器上,分析完成后可以在本地删除该文件以释放磁盘空间



最后云之家同步发送下eas\server\profiles\serverxxx\logs\jvm_gc* (导致CPU持续高消耗的那个实例下所有jvm开头的日志)


EAS Cloud应用服务器为windows,jdk类型为ibm jdk 实例对应的java程序导致CPU过高的处理办法

步骤一:查看java进程占用cpu的高低情况任务管理器-->详细信息-->cpu排序下图是java进程占用cpu比较高的情况(55),一般持续比较高的就需...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息