Flink全托管支持自动调优和定时调优两种调优模式。本文为您介绍如何配置自动调优和定时调优,以及配置过程中的注意事项。

背景信息

通常,您需要花费大量的时间进行作业调优。例如,新上线一个作业时,需要考虑如何配置该作业的资源、并发个数、Task Manager个数及大小等。此外,作业运行过程中,还需要考虑如何调整作业资源,使作业处于最高资源利用率;作业出现反压或延时增大的情况时,需要考虑如何调整作业配置等。您可以根据以下信息,选择合适的调优模式。
调优模式适用场景使用优势相关文档
未开启(默认模式)不配置自动调优或定时调优,但想简单的优化下作业资源。可以直接使用未开启下的资源建议来手动调整作业资源。

因为资源调优系统根据作业运行情况,给出资源调整建议,但是并不自动应用优化建议,需要您根据情况手动处理。

无。
自动调优某作业X,使用资源30 CU,上线平稳运行一段后,发现在Source无延迟、无反压的情况下,作业的CPU和内存使用率有时会很低。

此时如果您不想人工调节资源,需要系统自动完成资源地调节,可以使用自动调优功能。系统将在资源使用率比较低时,自动降低资源配置,在资源使用率提高达到一定阈值时,再自动提高资源配置。

  • 帮您更合理地调整作业并行度和资源配置。
  • 全局优化您的作业,解决作业吞吐量不足、全链路存在反压和资源浪费等各种性能调优问题。
定时调优某作业Y,根据业务的特点,有明显的时间区间特征。例如,全天早09:00~19:00是业务高峰,19:00到第二天09:00是业务低峰。
此时您可以使用定时调优功能,在高峰时间段使用30 CU,在业务低峰时使用10 CU。
说明 您需要明确知道各个时间段的资源使用情况。
配置定时调优策略,请参见开启并配置定时调优

使用限制

  • 在开启unaligned checkpoint时,不支持调整并发。
  • 自动调优不支持Session集群部署的作业。
  • 自动调优无法解决流作业所有的性能瓶颈。
    流作业性能问题是由上下游共同决定的,如果是Flink出现了瓶颈,可以通过Flink资源调优解决。但调优策略对作业的处理模式是基于一定的假设的。例如,流量平滑变化、不能有数据倾斜、每个算子的吞吐能力能够随并发度的升高而线性拓展。当业务逻辑严重偏离以上假设时,作业可能会存在异常。例如:
    • 无法触发修改并发度的操作、作业不能达到正常状态和作业持续重启等。
    • 自定义标量函数UDF、自定义聚合函数UDAF或自定义表值函数UDTF性能问题。
  • 自动调优无法识别外部系统的问题。如果出现外部系统问题,您需要自行解决。
    外部系统故障或访问变慢时,会导致作业并行度增大,加重外部系统的压力,导致外部系统雪崩。常见的外部系统问题如下:
    • 数据总线DataHub分区不足或消息队列MQ吞吐量不足。
    • Sink性能问题。
    • 云数据库RDS死锁。

注意事项

  • 自动调优触发后需要重启作业,因此会导致作业短暂停止处理数据。
  • 连续两次自动调优触发间隔为10分钟,您可以通过cooldown.minutes参数来调节触发自动调优的时间间隔。
  • 如果您使用了DataStream作业或SQL自定义的Connector,请确认作业代码中未配置作业并行度,否则自动调优将无法调整作业资源,即自动调优配置无法生效。
  • 新策略的触发时间和已有策略的触发时间间隔不能在半小时之内,否则新策略无法创建。

自动调优默认调优行为

如果您开启了自动调优,则系统默认会从并发度和内存两个方面为您进行自动调优:
  • 自动调优会调整作业的并发度来满足作业流量变化所需要的吞吐。自动调优会监控消费源头数据的延迟变化情况、TaskManager(TM) CPU实际使用率和各个算子处理数据能力来调整作业的并发度。详情如下:
    • 作业延迟Delay指标正常(不超过60s),不修改当前作业并发。
    • 作业延迟Delay指标超过默认阈值60s,分以下两种情况来调整并发度:
      • 延迟正在下降,不进行并发度调整。
      • 延迟增加并且连续上升3分钟(默认值), 默认调整作业并发度到当前实际TPS的两倍,但不超过设置最大的资源(默认值为64 CU)。
    • 作业不存在延迟指标。
      • 作业某VERTEX节点连续6分钟实际处理数据时间占比超过80%,调大作业并发度使得SLOT使用率降低到50%,但不超过设置最大的资源(默认为64 CU)。
      • 所有TM的平均利用率连续6分钟超过80%,调高并发度使TM的CPU使用率降低到50%。
    • 所有TM的最大CPU使用率连续24小时低于20%,且VERTEX的实际处理数据时间低于20%时,调低作业的并发度使CPU和VERTEX实际处理的时间占比提高到50%。
  • 自动调优也会监控作业的内存使用和Failover情况,来调整作业的内存配置。详情如下:
    • 在JobManager GC频繁或者发生OOM异常时,会调高JM的内存,默认最大调整到16 GiB。
    • 在TM GC频繁或者发生OOM异常、HeartBeatTimeout异常时,会调高TM的内存,默认最大调整到16 GiB。
    • 在TM内存使用率超过95%时,会调大TM的内存。
    • 在TM的实际内存使用率连续24小时低于30%时,降低TM内存的配置,默认最小调整到1.6 GiB。

开启并配置自动调优

  1. 进入自动调优开启并配置页面。
    1. 登录实时计算控制台
    2. Flink全托管页签,单击目标工作空间操作列下的控制台
    3. 作业运维页面,单击目标作业名称。
    4. 自动调优页签,单击调优配置
  2. 单击调优模式右侧的编辑
  3. 调优模式的下拉列表中,选择自动调优
  4. 单击保存
  5. 填写自动调优相关参数。
    自动调优参数相关的参数详情如下表所示。
    参数说明
    调整间隔时间(分钟)作业调优重启生效一次之后,下一次再进行调优的时间间隔。
    最大资源限制作业自动调整资源可以扩容的最大资源上限,单位为CU。
    更多参数配置您可以配置的参数列表如下:
    • mem.scale-down.interval:调低内存时最小触发时间间隔。

      默认值为24小时。24小时内,检测内存使用率如果小于阈值,则会降低内存,或建议降低内存。

    • parallelism.scale.max:并发度向上调整时,最大并发限制。

      默认值为-1,表示最大并发没有限制。

    • parallelism.scale.min:并发度向下调整时,最小并发限制。

      默认值为1,表示最小并发为1。

    • delay-detector.scale-up.threshold:可以容忍的最大延迟阈值。基于消费数据源头的延迟,来衡量作业处理吞吐的能力。

      默认值为1分钟。当数据处理能力不足延迟超过1分钟,则会通过Scale Up方式来提高作业的吞吐能力,Scale Up方式包括增加并发或者拆Chain,或建议Scale Up。

    • slot-usage-detector.scale-up.threshold:当VERTEX处理数据时间占比大于该值时,触发调大并发度的操作。

      默认值为0.8。监控数据处理节点(不包括Source节点)空闲时间。当持续大于阈值0.8时,降低作业的并行度以降低资源使用,或建议Scale Up。

    • slot-usage-detector.scale-down.threshold:当VERTEX处理数据时间占比大于该值时,触发调小并发度的操作。

      默认值为0.2。监控数据处理节点(不包括Source节点)空闲时间。当持续小于阈值0.2时,提升作业的并行度以提升处理能力,或建议Scale Down。

    • slot-usage-detector.scale-up.sample-interval:监控slot空闲指标的时间间隔,以便计算该时间间隔的平均值。

      默认值为3分钟,与slot-usage-detector.scale-up.thresholdslot-usage-detector.scale-down.threshold结合使用。当3分钟内的空闲时间平均值大于0.8或者小于0.2时,则进行scale-up或者scale-down。

    • resources.memory-scale-up.max:调整单个Task Manager和Job Manager的内存时,能调整到的最大值。

      默认值为16 GiB。TM和JM进行自动调优或调大并发时,内存的上限为16 GiB。

  6. 单击保存更改
    开启后,您会看到作业名称左侧的SQL图标会变为自动调优

    如果您需要关闭已开启的自动调优,则可以在调优模式中,选择未开启,单击保存

开启并配置定时调优

  1. 进入开启并配置定时调优页面。
    1. 登录实时计算控制台
    2. Flink全托管页签,单击目标工作空间操作列下的控制台
    3. 作业运维页面,单击目标作业名称。
    4. 自动调优页签,单击调优配置
  2. 单击调优模式右侧的编辑
  3. 调优模式的下拉列表中,选择定时调优
  4. 单击保存
  5. 单击新建调优策略
    1. 填写基础配置信息。
      调优策略基础设置
      配置说明如下表所示。
      配置说明
      触发周期您可以选择为单次触发、每天、每周和每月。当选择为每周和每月时,您还需要指定对应的生效日期范围。
      生效时间选择具体的生效时间。
      策略描述填写策略的描述信息。
    2. 单击下一步
  6. 配置资源设置信息。
    详情请参见配置作业部署信息
  7. 单击确认
    策略创建完成后,会在触发时间生效。您可以在对应策略的操作列下,编辑、删除或查看策略详情。调优策略

配置示例

全天09:00~19:00是业务高峰,在高峰时间段使用30 CU。19:00到第二天09:00是业务低峰,在业务低峰时使用10 CU。该场景的调优策略配置结果如下图所示。调优策略
具体的配置步骤详情如下:
  1. 高峰基础配置如下图所示。高峰基础配置
  2. 高峰资源配置如下图所示。高峰资源配置
  3. 低峰基础配置如下图所示。低峰基础配置
  4. 低峰资源配置如下图所示。低峰资源配置