首页 > 其他分享 >[JVM] 应用诊断工具之Fastthread(在线诊断)

[JVM] 应用诊断工具之Fastthread(在线诊断)

时间:2023-12-09 14:45:12浏览次数:25  
标签:JVM Thread 诊断 thread Threads 线程 Tab OutOfMemoryError Fastthread

0 序言

  • 背景

近期生产系统遇到了一个线程方面的问题,目前根因已定位到。现将fastthread这一诊断工具做一小结,便于以后快速使用

  • 博主我遇到的线程问题:java.lang.OutOfMemoryError: unable to create new native thread

java.lang.OutOfMemoryError 有 8 种类型。这8种类型中java.lang.OutOfMemoryError: unable to create new native thread 是常见的类型之一。OutOfMemoryError当应用程序无法创建新线程时会生成这种类型。
由于以下两个原因,可能会出现此错误:

  • 内存中没有空间容纳新线程。
  • 线程数超出操作系统限制。
  • FastThread
    • FastThread是一款针对Java线程分析的工具,可以帮助用户分析线程转储文件,查找线程问题,识别性能瓶颈等。
    • https://fastthread.io/

1 操作使用

Step1 上传thread-dump文件,等待解析完成

解析成功后,自动跳转至 Step2的分析页面

https://fastthread.io/ft-thread-report.jsp

Step2 分析页面

  • Thread Dump - Intelligence Report / Thread Count Summary / Total Threads count / Thread Pools /

各个Tab详细看看:

Step2.1 Thread Dump - Intelligence Report(线程Dump - 智能报告) Tab

Step2.2 Total Threads count(总线程数统计) Tab

Step2.3 Thread Pools(线程池) Tab

Step2.4 Daemon vs non-Daemon(守护线程 vs 非守护线程) Tab

Step2.5 Threads with identical stack trace(具有相同堆栈跟踪的线程) Tab

点击【WARN】提示的 their stack trace链接:

Step2.6 Last executed methods(最近执行的方法) Tab

Step2.7 CPU consuming threads(消耗CPU的线程) Tab

Step2.8 Blocking Threads - Transitive Graph(阻塞线程-传递图) Tab

Step2.9 GC Thread(GC线程) Tab

Step2.10 Threads Stack Length(线程栈的长度) Tab

Step2.11 Complex Deadlock(复杂的死锁) Tab

Step2.12 Deadlock(死锁) Tab

Step2.13 Finalizer Thread(终结器线程) Tab

Step2.14 Exception(异常) Tab

Step2.15 Flame Graph(火焰图像) Tab

Step2.16 Bottom up Call Stack Tree(自底向上调用堆栈树) Tab


Step2.17 My Patterns(Βeta)(我的模式(BETA)) Tab

X 参考文献

排除/解决 OutOfMemoryError:无法创建新的本机线程

标签:JVM,Thread,诊断,thread,Threads,线程,Tab,OutOfMemoryError,Fastthread
From: https://www.cnblogs.com/johnnyzen/p/17890873.html

相关文章

  • JetBrains IntelliJ IDEA 2023.3 (macOS, Linux, Windows) - 功能强大,符合人体工程学
    JetBrainsIntelliJIDEA2023.3(macOS,Linux,Windows)-功能强大,符合人体工程学的JVMIDE请访问原文链接:https://sysin.org/blog/jb-idea-2023/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgJetBrainsIntelliJIDEA-功能强大,符合人体工程学的JVMIDE为何......
  • [JVM] Java Heap Dump 分析 [转载]
    0序缘起近期项目上我负责的微服务出现了难以排查的问题,目前怀疑是JVM线程方面的情况,但也需从heapdump方面进一步印证,故需深入了解heapdump文件内容的各项含义。本文主要转载了网友的观点,详见:参考文献1HeapDump分析1.1heapdump简介heapdump文件是一个二进制......
  • 面对突如其来的JVM 垃圾回收问题如何下手解决
    Java全能学习面试指南:https://javaxiaobear.cn今天我们主要从一个实战案例入手分析面对突如其来的GC问题该如何下手解决。想要下手解决GC问题,我们首先需要掌握下面这三种问题。如何使用jstat命令查看JVM的GC情况?面对海量GC日志参数,如何快速抓住问题根源?你不得不掌握的......
  • JVM内存用量的再学习
    JVM内存用量的再学习背景最近解决一个SQLServer的问题耗时很久.最终找到了一个看似合理的问题解释.但是感觉不能只是总结于数据库方面因为为了解决这个问题增加了很多监控措施.所以想就这这个问题,总结一下这次问题诊断过程中学习到的JVM相关知识.一个JVM的监控图......
  • openGauss学习笔记-142 openGauss 数据库运维-例行维护-导出并查看wdr诊断报告
    openGauss学习笔记-142openGauss数据库运维-例行维护-导出并查看wdr诊断报告生成快照数据需参数enable_wdr_snapshot=on,访问WDR快照数据需要sysadmin或monadmin权限,因此需要使用root账号或其他拥有权限的账号来生成WDR诊断报告。执行如下命令新建报告文件。touch/home/om/w......
  • Day12 jvm 内存模型JMM
    1.jvm内存模型JMM原帖链接JMM控制Java线程之间的通信,决定一个线程对共享变量的写入何时对另一个线程可见。每条线程在自己的工作内存中对共享变量(副本)进行操作,JMM再负责把这些操作同步到主内存中JVM1.8用Metaspace(元空间)(在JVM外的本地内存中)取代了方法区(MethodArea)(在......
  • JVM-垃圾回收器
    G1收集器G1收集器的内存结构完全区别去CMS,弱化了CMS原有的分代模型(分代可以是不连续的空间),将堆内存划分成一个个Region(1MB~32MB,默认2048个分区),这么做的目的是在进行收集时不必在全堆范围内进行。它主要特点在于达到可控的停顿时间,用户可以指定收集操作在多长时间内完成,即G1提......
  • JVM-常量池
    概要:1.Java基本类型的包装类的大部分都实现了常量池技术,即Byte、Short、Integer、Long、Character、Boolean;2.且数值[-128,127]的相应类型的缓存数据,但是超出此范围仍然会去创建新的对象。3.两种浮点数类型的包装类Float、Double并没有实现常量池技术。实例:Inte......
  • JVM-垃圾回收
    虚拟机栈:描述的是方法执行时的内存模型,是线程私有的,生命周期与线程相同,每个方法被执行的同时会创建栈桢(下文会看到),主要保存执行方法时的局部变量表、操作数栈、动态连接和方法返回地址等信息,方法执行时入栈,方法执行完出栈,出栈就相当于清空了数据,入栈出栈的时机很明确,所以这......
  • Java环境变量配置及报错java --version Error: could not open `D:\APP\Develop\JA
    C:\Users\Administrator>java--versionError:couldnotopen`D:\APP\Develop\JAVA\jre\lib\amd64\jvm.cfg'Java环境变量的配置控制面板→系统→高级系统设置→环境变量在下方系统变量中新建在下方系统变量中找到Path,双击打开,新建两个%JAVA_HOME%\bin%JAVA_HOME%\jre\b......