tencent cloud

文档反馈

作业自动调优

最后更新时间:2023-11-07 15:50:49

    背景信息

    用户通常需要花费大量的时间对作业进行调优。例如新上线一个作业时,需要考虑如何配置该作业的并行度、TaskManager 个数、TaskManager CU 数等。此外,作业运行过程中,还需要考虑如何调整作业资源配置,提升作业的资源利用率;而作业出现反压或延时增大的情况时,需要考虑增大作业资源配置等。 Oceanus 提供的自动调优功能,可以帮助用户更合理地调整作业并行度和资源配置,全局优化您的作业,解决作业吞吐量不足、作业繁忙以及资源浪费等各种性能调优问题。

    使用限制

    自动调优无法解决流作业本身的性能瓶颈。 因为调优策略对作业的处理模式是基于一定的假设的。例如,流量平滑变化、不能有数据倾斜、每个算子的吞吐能力能够随并发度的升高而线性拓展。当业务逻辑严重偏离以上假设时,作业可能会存在异常。如果作业本身存在问题,您需要进行手动调优。常见的作业异常如下:
    无法修改作业并发度。
    作业不能达到正常状态、作业持续重启。
    自定义函数 UDF 性能问题。
    数据严重倾斜。
    自动调优无法解决外部系统导致的问题。 外部系统故障或访问变慢时,会导致作业并行度增大,加重外部系统的压力,导致外部系统雪崩。如果出现外部系统问题,您需要自行解决。常见的外部系统问题如下:
    源头消息队列分区数不足或吞吐量不足。
    下游 Sink 性能问题。
    下游数据库死锁。

    注意事项

    自动调优功能为目前处于公开测试阶段(Beta 版本),暂不建议对重要的生产任务开启自动扩缩容。
    自动调优触发后需要重启作业,因此会导致作业短暂停止处理数据。大状态的作业由于启停过程耗时较长,可能导致长时间停流,不建议开启自动扩缩。
    连续两次自动调优触发间隔默认为10分钟。
    如果用户为 Jar 类型的作业开启了自动调优,请确认作业代码中未配置作业并行度,否则自动扩缩容将无法调整作业资源,即自动调优配置无法生效。
    由于集群资源限制,当前作业自动调优过程为串行执行,因此不要为集群中所有作业开启自动调优,否则会相互影响。

    默认调优规则

    开启自动调优后,Oceanus 会自动调整作业并行度和 TaskManager CU 数这两个配置,对作业进行优化。
    1. 自动调优会调整作业并行度来满足作业流量变化所需要的吞吐。自动调优会监控TaskManager CPU 使用率和各个算子处理数据能力来调整作业的并发度。详情如下:
    作业所有 TaskManager 的 CPU 使用率连续 10 分钟超过 80%,将作业默认并行度调高为原来的一倍,但作业运行 CU 数不超过设置最大的资源(默认为 64 CU)。
    作业任意一个 Vertex 节点连续 10 分钟处理数据时间占比超过 80%,将作业默认并行度调高为原来的一倍,但作业运行 CU 数不超过设置最大的资源(默认为 64 CU)。
    作业所有 TaskManager 的 CPU 使用率连续 4 小时低于 20%,并且所有 Vertex 节点 4 小时内处理数据时间占比均低于 20% 时,将作业默认并行度调低为原来的一半,最小降低到 1。
    2. 自动调优也会监控作业的 TaskManager 内存使用情况来调整作业的内存配置。详情如下:
    作业所有 TaskManager 的堆内存使用率连续 1 小时超过 80%,将 TaskManager CU 数调高为原来的一倍。
    作业所有 TaskManager 的堆内存使用率连续 4 小时低于 30% 时,将 TaskManager CU 数调低为原来的一半。
    注意
    作业并行度最小降低到 1。TaskManager CU 数根据集群是否开启细粒度资源可以有不同的配置,开启细粒度资源则 CU 数可以为 0.25, 0.5, 1, 2 否则 CU 数只能为 1。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持