对比
Profiler对比,通过火焰图实时展示两个实例或同一个实例不同时间段的方法、类和线程的调用关系和执行效率的差异,帮助对比代码性能差异。
对比
- 登录管理控制台。
- 单击左侧,选择“管理与监管 > 应用性能管理 APM”,进入APM服务页面。
- 在左侧导航栏选择“应用监控 > 指标”。
- 在界面左侧树单击待查看Profiler性能分析环境后的。
- 单击“Profiler性能分析”,切换至Profiler性能分析页签。
- 单击“对比”,进入对比页面。
- 在Profiler页签选择您想要查看的实例、性能分析类型、范围、聚合维度以及对比类型,可以查看该实例对应的性能分析数据。
图1 对比
- 对比对象:和分别支持不同实例,或相同实例不同时间段。
- 选择实例:在下拉列表中选择实例,当前支持选择1个实例。
- 单击时间维度选择按钮,默认“近20分钟”。
当前支持“近5分钟”、“近20分钟”、“近1小时”、“近3小时”、“近6小时”、“近1天”、“今天”、“昨天”以及自定义。
图2 对比实例
- 类型:在下拉菜单中,选择类型。当前支持CPU Time、Allocated Memory、Latency以及Live Object Memory四种类型。
- 选择范围:在下拉菜单中,选择范围。当前支持My Code以及All Code两种范围。
- 选择聚合维度:在下拉菜单中,选择聚合维度。当前支持Line、Method、Class以及Package四种方式。
表1 类型说明 选择项
参数
说明
类型
CPU Time
每个方法在CPU上的运行时间。
Allocated Memory
已分配的堆内存(包括已被回收和未被回收的部分),使用场景包括频繁GC等。
Latency
trace相关线程的方法执行的总耗时。包括方法在CPU上的运行时间、等待I/O的时间以及方法运行时发生的任何其他时间。
Live Object Memory
已分配但未被回收的堆内存,使用场景主要包括内存泄漏等。该特性需要JDK版本为JDK17。
范围
My Code
用户代码。
All Code
全部代码。
聚合维度
Line
代码行。
Method
方法。
Class
类。
Package
Java包名称。
- 选择对比类型:在下拉菜单中,选择对比类型。当前支持table、flame两种类型。
- 按照方法路径搜索:搜索框设置搜索条件后,单击,查看满足搜索条件的火焰图。
- 页面下方实时展示每一个方法、类和线程的调用关系和执行效率。
表2 对比参数说明 参数
说明
flame
- 火焰图Y轴(纵轴)表示调用栈,每一层都是一个函数(包),调用的越深,火焰层数越高,最底部(火焰尖)是正在执行的函数,上方是他的父函数。
- 火焰图X轴(横轴)表示CPU占用时长、trace相关线程的方法执行的总耗时、已分配的堆内存大小或者已分配但未被回收的堆内存大小。以CPU占用时长为例,占用的CPU时间越长,在火焰图X轴上的距离越长。
- 在火焰图中,红色表示当前实例对比值较大、绿色表示当前实例比对值较小、蓝色表示该方法、类或线程,仅在当前实例侧存在、白色表示对比值相同。
- 鼠标放在火焰图上,展示某一个方法、类和线程的详细信息。
- 单击火焰图中某个方法条,该方法条横向放大。单击“Total”列标题行,火焰图还原。
table
- 展示方法路径、Baseline、Comparison以及Diff。
- 鼠标放任意一行对比结果上,展示该方法的对比详细信息。