1、各种工具
-
jsp 查看所有java进程:
-
jstack
jdk自带的线程堆栈分析工具,使用该命令可以查看或导出 java 应用程序中线程堆栈信息。可以定位线程出现长时间停顿的原因,如线程间的死锁、死循环、请求外部资源导致的长时间等待等问题。
果真如此
- Java visualVM 一款可视化的工具,跟踪内存泄漏、监控垃圾回收器、执行内存和 CPU 分析。 写一个堆溢出的代码试试:
(没有调整各个垃圾回收区域的大小,不影响使用)
-
阿里的arthas(太强了这个)
官方教程:arthas.aliyun.com/doc/install… 可以找到本机上所有的Java进程,以及序号。可以根据进程序号来监视进程。通过dashboard命令可以查看到大盘信息(实时刷新)
从大盘信息可以看出,有两处问题比较大:id为8的线程cpu占用率太高了,id为9、10 的线程阻塞。下面一一解决问题:
问题一:CPU占用率高
调用thread + 线程id 8 ,可以直接看到问题代码的位置所在。
原来是因为一个空的死循环
问题二:线程阻塞 命令:thread -b ,一步解决
另外,arthas支持代码的热部署,实在太帅了!
2、实际项目中的应用:
待续~