全部产品
Search
文档中心

实时计算Flink版:查看作业性能

更新时间:Apr 11, 2024

您可以查看运行中作业的性能,包括Job Manager与运行Task Managers的CPU、内存和线程的使用情况,这可以协助您定位代码问题,例如作业代码是否存在问题、个别类是否初始化比较慢、个别类是否占用资源比较多等问题。本文为您介绍如何查看作业Job Manager和运行Task Managers的性能。

前提条件

其他阿里云账号或RAM用户共同使用Flink工作空间时,需要为阿里云账号或RAM用户授权,以进行查看作业性能等相关操作,详情请参见项目空间授权

背景信息

您可以在实时计算开发控制台,通过火焰图、内存动态与线程动态,查看运行中作业的Job Manager和运行Task Managers的性能,详情请参见下表。

类别

详情

火焰图

  • CPU耗时:通常顶层占据宽度比较大的函数消耗的CPU比较多,表示该类函数可能存在性能问题。

  • 内存分配:查看不同类分配的内存情况。

  • 锁耗时:查看锁竞争、死锁导致的性能下降问题。

  • ITimer:在相同时间间隔下,查看每个间隔内所有线程之间CPU的消耗情况。

内存动态

JVM不同内存区域的内存变化。

线程动态

查看线程的情况,并支持选择线程并进行分析采样。

使用限制

  • 仅Flink计算引擎VVR 4.0.11及以上版本支持查看作业性能。

  • 仅支持查看运行作业的性能,历史作业不支持查看性能。

操作步骤

  1. 登录实时计算控制台

  2. 单击目标工作空间操作列下的控制台

  3. 在左侧导航栏上,选择作业运维

  4. 单击目标作业名称,单击作业探查

  5. 运行日志页签,查看Job Manager或运行Task Managers的性能。

    • Job Manager性能

      单击Job Manager页签下的性能查看,查看Job Manager性能信息。

    • 运行Task Managers性能

      单击运行Task Managers页签下的Path, ID,单击性能查看,查看运行Task Managers性能信息。

    说明
    • 火焰图的详情请参见火焰图

    • 如果火焰图中部分显示UnKnown,说明您使用了native方法。因此没有Java方法的名字是符合预期的,详情请参见Unknown

火焰图

火焰图(Flame Graph)是一种可视化工具,用于展示软件程序执行过程中的性能瓶颈。它通过堆叠的方式展示调用栈,使得最频繁执行的代码段在视觉上更加突出,更多说明请参见火焰图说明

通过火焰图,您可以快速识别出程序中的热点函数,即占用大量CPU时间的函数,更加直观地理解程序的运行状况,并针对性地进行性能优化。但需要注意的是,火焰图通常是基于采样数据生成,可能无法完全反映程序的全部执行情况。使用火焰图识别瓶颈时,应结合其他性能分析工具和实际的业务场景进行综合判断。

通过火焰图识别瓶颈的整体思路如下:

  1. 理解火焰图的结构

    火焰图的每一层代表调用栈的一个级别。最底层是应用程序的入口点,而更高层则表示更深层次的函数调用。

  2. 关注火焰的宽度与出现频率

    在火焰图中,每个“火焰”的宽度代表了函数在采样期间的执行时间占比,更宽的火焰表示该函数占用了更多的CPU时间,这通常代表了潜在的性能瓶颈。有些函数的火焰可能不是最宽的,但如果它们频繁出现在火焰图中,这意味着它们被调用了很多次,累积起来也是一个性能问题。

  3. 分析火焰的位置

    火焰图的垂直位置可以告诉您瓶颈发生在调用栈的哪个级别。位于底部的宽火焰通常表示程序的早期阶段或主要逻辑部分存在问题,而位于顶部的宽火焰可能指向具体的处理函数或库函数。

  4. 结合实际代码分析

    一旦您通过火焰图识别出了潜在的瓶颈,应该结合实际的代码进行分析,查看这些热点函数的实现,寻找可以优化的地方,比如减少循环次数、优化数据结构、减少同步操作等。

  5. 进行性能测试

    优化代码后,可以进行性能测试验证优化效果。并比较优化前后火焰图的变化,确保性能瓶颈得到了实质性的改善。

相关文档

  • 作业智能诊断服务能够帮您监控作业健康状况,全面保障您的业务稳定可靠运行,详情请参见作业智能诊断

  • 通过作业配置和Flink SQL优化两方面提升Flink SQL作业性能,详情请参见高性能Flink SQL优化技巧