近日,发现部署在阿里云上线的java应用程序突然间CPU飙升到了100%,日常使用时正常CPU不超过10%的,所以肯定是哪段代码出了问题,百度搜索了可以通过阿里的Arthas工具查询Cpu占用高。

阿里的Arthas工具查询Cpu占用高

1、在终端执行代码安装Arthas工具

wget https://alibaba.github.io/arthas/arthas-boot.jar

2、运行 java -jar arthas-boot.jar

java -jar arthas-boot.jar

java应用程序阿里云CPU过高Arthas如何排查

3、查看运行情况, 红框部分就是罪魁祸首 dashboard

dashboard

java应用程序阿里云CPU过高Arthas如何排查

4、查看占用最高cpu线程详情信息, 堆栈信息没截全,最后会输出具体哪行代码

thread pid(51)

java应用程序阿里云CPU过高Arthas如何排查

问题处理:由Arthas定位到问题代码是,正则匹配引起的,匹配的代码是正则验证网址的正确性,复制的是网络公用的代码,那段代码匹配某些网址会导致发生回溯回调时间过长问题。本文引用 https://zhuanlan.zhihu.com/p/599409887