更新时间:2024-09-26 GMT+08:00
分享

性能分析

Profiler性能分析,自动获取应用程序运行过程中CPU和内存和时延的使用情况,通过火焰图实时展示每一个方法、类、线程和包的调用关系和执行效率,帮助优化代码性能。

性能分析

  1. 登录管理控制台。
  2. 单击左侧,选择“管理与监管 > 应用性能管理 APM”,进入APM服务页面。
  3. 在左侧导航栏选择“应用监控 > 指标”。
  4. 在界面左侧树单击待查看Profiler性能分析环境后的
  5. 单击“Profiler性能分析”,切换至Profiler性能分析页签。
  6. 单击“性能分析”,进入性能分析页面。
  7. 在Profiler页签选择您想要查看的实例、性能分析类型、范围以及聚合维度,可以查看该实例对应的性能分析数据。

    图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包名称。

    • 按照方法路径搜索:搜索框设置搜索条件后,单击,查看满足搜索条件的火焰图。
    • 单击时间维度选择按钮,默认“近20分钟”。

      当前支持“近5分钟”、“近20分钟”、“近1小时”、“近3小时”、“近6小时”、“近1天”、“今天”、“昨天”以及自定义。

    • 页面下方实时展示每一个线程、方法、类和包的调用关系和执行效率。
      表2 Profiler参数说明

      参数

      说明

      火焰图

      • 火焰图Y轴(纵轴)表示调用栈,每一层都是一个函数(包),调用的越深,火焰层数越高,最底部(火焰尖)是正在执行的函数,上方是他的父函数。
      • 火焰图X轴(横轴)表示CPU占用时长、trace相关线程的方法执行的总耗时、已分配的堆内存大小或者已分配但未被回收的堆内存大小。以CPU占用时长为例,占用的CPU时间越长,在火焰图X轴上的距离越长。
      • 在火焰图中,相同的方法或包显示的颜色相同。
      • 鼠标放在火焰图上,展示某一个方法、类和线程的详细信息。
      • 单击火焰图中某个方法条,该方法条横向放大。单击首列“Total”列标题行,火焰图还原。

      方法路径

      • 鼠标放在Location类某个方法名称上,展示该方法的详细信息。
      • 单击Location类某个方法名称,火焰图侧对应的方法会高亮显示,其余方法灰化。再次单击同一个方法名称,火焰图恢复原状。

      Self

      仅方法自身的性能消耗,不包含调用方法。该数值为所有线程执行结果的总和,因此结果有可能大于所选时间段。

      Total

      总性能消耗,包含方法自身及其调用方法。该数值为所有线程执行结果的总和,因此结果有可能大于所选时间段。

相关文档