一、Flame Graphs(火焰图)

在追求极致性能的场景下,了解你的程序运行过程中cpu在干什么很重要,火焰图就是一种非常直观的展示cpu在程序整个生命周期过程中时间分配的工具。

火焰图对于现代的程序员不应该陌生,这个工具可以非常直观的显示出调用栈中的CPuU消耗瓶颈。

火焰图对于现代的程序员不应该陌生,这个工具可以非常直观的显示出调用栈中的CPuU消耗瓶颈。
http://www.brendangregg.com/flamegraphs.html
image.png
火焰图,简单通过x轴横条宽度来度量时间指标,y轴代表线程栈的层次。

二、Tprofiler

  • 案例:

使用JDK自身提供的工具进行JVM 调优可以将TPS由2.5提升到20(提升了7倍),并准确定位系统瓶颈。
系统瓶颈有:应用里静态对象不是太多、有大量的业务线程在频繁创建一些生命周期很长的临时对象,代码里有问题。
那么,如何在海量业务代码里边准确定位这些性能代码?这里使用阿里开源工具TProfiler来定位这些性能代码,成功解决掉了GC过于频繁的性能瓶颈,并最终在上次优化的基础上将 TPS 再提升了4倍,即提升到10日。

  • TProfiler 配置部署、远程操作、日志阅读都不太复杂,操作还是很简单的。但是其却是能够起到一针见血、立竿见影的效果,帮我们解决了GC过于频繁的性能瓶颈。
  • TProfiler最重要的特性就是能够统计出你指定时间段内JVM 的 top method,这些 top method极有可能就是造成你JVM性能瓶颈的元凶。这是其他大多数JVM调优工具所不具备的,包括 JRockit Mission Control。JRokit 首席开发者 Marcus Hirt在其私人博客《Low Overhead Method Profiling with Java Mission Control》下的评论中曾明确指出JRMC 并不支持TOP方法的统计。
  • TProfiler的下载:

https://github.com/alibaba/TProfiler

三、Btrace

Java运行时追踪工具
常见的动态追踪工具有BTrace、HouseMD(该项目已经停止开发)、Greys-Anatomy(国人开发,个人开发者)、Byteman (3Boss出品),注意Java运行时追踪工具并不限于这几种,但是这几个是相对比较常用的。

BTrace是SUN Kenai云计算开发平台下的一个开源项目,旨在为java提供安全可靠的动态跟踪分析工具。先看一下BTrace的官方定义:
简洁明了,大意是一个Java平台的安全的动态追踪工具。可以用来动态地追踪一个运行的Java程序。BTrace动态调整目标应用程序的类以注入跟踪代码(“字节码跟踪”)。

四、YourKit

五、JProbe

六、Spring lnsight

建议熟悉:Visula VM、Arthas、JProfiler,dump文件分析试用eclipse MAT