如果was出现CPU使用率长时间在90%以上,可以按如下方法收集数据并解决问题。
案例如下:
通过TOP命令发现was占用CPU比较高
IBM官方一个脚本,可以分析出该进程下那个线程占用CPU过高
使用方法如下:
sh linperf.sh pid
执行完该脚本会生成3个javacore和一个linperf_RESULTS.tar.gz文件 。
解压linperf_RESULTS.tar.gz,可以根据生成的文件来查看占用CPU较高的线程,方法如下:
在top.out文件中可以看到占用CPU最高的进程是:
在topdashH.29218.out文件中,可以看到该进程下所有的线程:
以线程28182为例:28182(十进制)---->6E16(十六进制)
在JAVACORE中搜索该线程,查看该线程的堆栈信息如下:
以线程12286为例:12286(十进制)---->2FFE(十六进制)
在JAVACORE中搜索该线程,查看该线程的堆栈信息如下:
从JAVACORE中的线程堆栈信息中可以看出来,造成CPU过高的线程均在做正则表达式匹配操作。
参考连接:
http://www-01.ibm.com/support/search.wss?rs=180&tc=SSCMPB9+SSCMP9J&q=MustGatherDocument