使用jps -l查看目前的java应用进程
启动arthas,选择需要监控的进程
-
dashboar查看该应用整体情况
- 使用thread命令,查看占用cpu过高的几个线程ID
- 然后使用thread 线程ID查看具体线程在执行哪些内容,可以看到对应的类和方法
-
正在上传…
重新上传
取消
正在上传…
重新上传
取消
正在上传…
重新上传
取消
- 使用jad反编译 对应类的方法,分析具体的代码,定位问题
-
正在上传…
重新上传
取消
正在上传…
重新上传
取消
可以看到此处,只要有一个线程的任务执行不完,就会死循环大量消耗cpu资源;
接下来就是对发现的问题进行处理,可以从业务设计层面或者代码层次处理;
例如此处,可以换一种等待线程结束的方法
正在上传…
重新上传
取消