若是was出现CPU使用率长时间在90%以上,能够按以下方法收集数据并解决问题。java
案例以下:正则表达式
经过TOP命令发现was占用CPU比较高线程
IBM官方一个脚本,能够分析出该进程下那个线程占用CPU太高code
使用方法以下:进程
sh linperf.sh pid
执行完该脚本会生成3个javacore和一个linperf_RESULTS.tar.gz文件 。class
解压linperf_RESULTS.tar.gz,能够根据生成的文件来查看占用CPU较高的线程,方法以下:搜索
在top.out文件中能够看到占用CPU最高的进程是:方法
在topdashH.29218.out文件中,能够看到该进程下全部的线程:im
以线程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