报告时间
2023年7月11日上午11点
报告类型
系统重启后报告。
问题描述
2023年7月10日下午5点客户发现Bcp-server运行很卡,查看后 CPU 100%,然后重启后恢复正常。此前也出现过多次。
问题类型
CPU负载过高。
分析工具
JMC。
诊断时间
10分钟。
解决步骤
首先,查找CPU问题时刻的JFR文件。
1.查看启动脚本startWeblogic.cmd中的repository路径,根据路径找到JFR文件。
2.通过文件名称,文件大小可确定时间点、进程号、重启前和重启后这几个要素。确定了如下第二张图的16_41,16_49两个重启前的文件。
其次,确认是否CPU问题是本JVM进程引起的还是其他。
1.打开JDK1.7版本/bin/jmc.exe,将以上两文件拖入IDE中。
2.定位到“一般信息/预览”,查看CPU使用情况,发现确实JVM占用了100%的CPU。
第三,确认本JVM中的所有线程CPU占比情况(抽样占比)。
1.切换到“线程/热点线程”,根据“样本计数”查看线程抽样情况及堆栈信息,发现占用高的都是HTTP线程且线程堆栈如出一辙。
第四,分析及调优
2.在堆栈跟踪上,点击右键,展开堆栈“子树”分析堆栈找出问题点。
3.确认优化方案
RLT0004.toXMLString调用时每次都初始化XStream,初始化的执行导致了CPU过高,一般有两种优化方案,其一,使用单例XStream,其二砍掉RLT0004.toXMLString。根据实际业务情况和经验作出最优解。
总结
客户A的Bcp-server服务配置了JFR,在事发后重启域,仍然能够快速精准解决CPU问题,可有效提高客户满意度。因此强化监控是每个项目实施时的必备工作。