什么是应用诊断分析平台ATP

阿里云应用诊断分析平台(Application Troubleshooting Platform,ATP)是一款分析功能丰富、诊断能力完备的平台,它可以帮助用户高效定位应用的性能问题、异常行为、程序崩溃等问题。

Java堆分析

虽然Java拥有高效的垃圾回收机制,开发人员无须显式地释放无用对象所占用的空间,但是仍然存在"内存泄露"的情况,且内存问题也是Java开发人员研发过程中遇到最多的问题类型之一。因此需要一款内存分析利器来帮助我们诊断这类问题。Eclipse MAT是一款优秀的Java内存分析工具,被广泛适用于开发人员的本地环境。但是随着应用复杂性的增加,许多内存问题往往仅发生在生产环境中,且生产环境中通常配置了较大的堆内存,使得生成的Heap Dump文件通常较大,导致MAT无法派上用场。为了让我们的开发者,能够更高效地在线排查生产环境中遇到的Java内存问题,我们研发了Java堆分析功能,它基于MAT的分析库提供一些常用的分析功能,同时新增各种分析报表,帮助开发者直接通过浏览器进行相关的排查工作。

Java线程栈分析

在日常业务开发中,我们经常遇到Java应用导致CPU 100%使用率且居高不下,或者出现应用死锁、错误并发逻辑、无响应等问题,在这些场景中我们可以输出栈日志。Java线程栈分析对栈日志进行分析,聚合成调用火焰图,帮助用户快速定位热点方法和最深的调用栈。Java线程栈分析提供种类丰富的过滤、查找能力,帮助用户筛选可疑线程。除此之外,Java线程栈分析还可以根据线程名自动聚合出线程池,帮助用户快速锁定可疑线程。

Java GC日志分析

Java的自动内存管理和垃圾回收(Garbage Collection,GC)机制大大提高了业务的开发效率,但是在开发过程中因为垃圾回收而导致的长暂停等问题屡见不鲜,GC日志是我们排查GC相关问题时最重要的日志。GC日志冗长,格式多变,内容繁杂,而且GC本身的理解门槛较高,需要一款好用的工具来帮助我们分析GC日志以排查问题。Java GC日志分析通过对GC日志进行分析,帮助用户找出日志中潜在的GC问题以及可能引发问题的GC,从暂停时间,对象统计,GC原因等多个维度进行分析,协助问题的排查。除此之外,Java GC日志分析还提供了丰富的GC性能指标,帮助用户评估GC性能,指导JVM参数的调整,改善应用整体运行状态。

差异分析

有时我们需要对比查看多份分析结果,比如查看应用一小时时间间隔的两份分析结果,以此来判断应用某些指标的变化趋势,并进一步做故障排查,针对这种需求,我们提供了差异分析,它将两次分析结果一起呈现,方便用户对比。差异分析并非新功能,它依赖其他分析能力,只是对分析结果的重新组合、呈现。