在线分析工具-thread dump分析

一、概述
对于内存溢出,频繁GC,或者内存占用过高。我们可以让运维人员线上dump,抓取gc文件,进行分析。找出堆中大对象或者线程占用不释放
二、分析工具

分析功能 fastthread.io TDA-THREAD DUMP ANALYZER MemoryAnalyzer
网站地址 https://fastthread.io/ https:github.com/irockel/tda https://www.cnblogs.com/letcafe/p/mat.html


三、分析方法
1、线程组分析
用于线程数过大,快速定位相关线程组;典型场景:每次方法调用都创建一个新的线程池
2、相同栈聚合分析(fastthread.io)
对于相同栈进行聚合,可快速定位异常的方法栈或者某个典型方法
对应的分析截图,此处省略
3、对象锁传递分析(fastthread.io)
快速定位锁等待场景,进而定位到有问题的方法入口
如:java.util.concurrent.ConcurrentHashMap is blocking 400 treads.
对应的分析截图,此处省略
4、Most Used Methods (fastthread.io)
如果某个方法出现的次数过多,说明这个方法可能存在慢的远程调用,锁等待,不合理的调用等场景
对应的分析截图,此处省略
5、Dead Lock(fastthread.io)
定位锁相互等待如:Thread hhtp-nio-3945-exec-3 is in deadlock wihth thread http-nio-3532-exec-1
对应的分析截图,此处省略
6、GC Threads(fastthread.io)
cpu核数和默认的gc线程数量是相关的,过多的gc线程对应用服务的性能有一定的影响
7、栈长度分析调用
不合理的递归调用
8、CPU占用过高的线程
打开服务所在Linux,使用top命令查找占用cpu高的top5,找出对应的线程栈
9、找出慢线程
不同dump中停留相同方法的线程响应慢的问题
10、对象回收
对象回收执行Finalize方法,若阻塞,引起OOM,故关注Finalizer Thread

相关推荐
m0_6245785914 小时前
SQL数据分析如何剔除极端异常值_配合窗口函数检测偏离度
jvm·数据库·python
2401_8800714014 小时前
Redis怎样查询集群的整体健康状态_使用cluster info指令查看槽位覆盖率与节点状态
jvm·数据库·python
2301_8159019714 小时前
Go语言如何写负载均衡器_Go语言负载均衡器实战教程【完整】
jvm·数据库·python
dFObBIMmai14 小时前
Redis怎样定位每秒被高频访问的热点键
jvm·数据库·python
m0_6091604914 小时前
golang如何实现负载均衡器组件_golang负载均衡器组件实现详解
jvm·数据库·python
m0_5913647314 小时前
SQL如何解决GROUP BY导致查询变慢_利用覆盖索引进行优化
jvm·数据库·python
2401_8504916514 小时前
c++如何批量修改文件后缀名_std--filesystem--replace_extension【实战】
jvm·数据库·python
m0_4636722014 小时前
golang如何使用sync.WaitGroup_golang sync.WaitGroup并发等待使用方法
jvm·数据库·python
X566114 小时前
CSS如何实现元素边框颜色渐变_利用border-image方案
jvm·数据库·python
duke86926721414 小时前
c++ trpc-cpp框架 c++如何使用腾讯trpc构建微服务
jvm·数据库·python