背景信息
许多用户的作业流量可能存在潮汐的特征,例如直播场景在夜间流量高,白天流量低。如果按夜间的峰值处理能力来配置资源,可能导致资源浪费;而按白天的处理能力来配置资源,有可能导致夜间处理能力不足。
Oceanus 提供的作业自定义调优功能,可以帮助用户更合理地调整作业并行度和资源配置。
使用限制
作业自动调优功能只支持 SQL 和 JAR 作业。
自定义调优无法解决流作业本身的性能瓶颈。
因为调优策略对作业的处理模式是基于一定的假设的。例如,流量平滑变化、不能有数据倾斜、每个算子的吞吐能力能够随并发度的升高而线性拓展。当业务逻辑严重偏离以上假设时,作业可能会存在异常。如果作业本身存在问题,您需要进行手动调优。常见的作业异常如下:
无法修改作业并发度。
作业不能达到正常状态、作业持续重启。
自定义函数 UDF 性能问题。
数据严重倾斜。
自定义调优无法解决外部系统导致的问题。
外部系统故障或访问变慢时,会导致作业并行度增大,加重外部系统的压力,导致外部系统雪崩。如果出现外部系统问题,您需要自行解决。常见的外部系统问题如下:
源头消息队列分区数不足或吞吐量不足。
下游 Sink 性能问题。
下游数据库死锁。
操作步骤
1. 登录 流计算 Oceanus 控制台,在作业管理中,切换到调优页面。
![](https://qcloudimg.tencent-cloud.cn/image/document/790787d89b7d8a9121cb9539b484c1ae.png)
2. 单击自动调优开关,在弹窗中单击确定,即可进入自定义调优配置。
![](https://qcloudimg.tencent-cloud.cn/image/document/23db7d8d765e755b1546cc7b4ac0cbac.png)
3. 进行调优配置调优配置
当前自定义调优的周期是一天,客户需要设置调优的起止时间、调优行为和扩缩容比例。
每天的调优开始时刻到达时,先按照调优行为重启作业,按照扩缩容比例增大作业并行度或 TM CU 数;调优结束时刻到达时,先按照调优行为重启作业,按照扩缩容比例降低作业并行度或 TM CU 数。
![](https://qcloudimg.tencent-cloud.cn/image/document/3da02f926b16219d790458796ec6edf8.jpg)
![](https://qcloudimg.tencent-cloud.cn/image/document/3da02f926b16219d790458796ec6edf8.jpg)
注意事项
自定义调优功能为目前处于公开测试阶段(Beta 版本),暂不建议对重要的生产任务开启自定义调优。
自定义调优的开始和结束行为需要一一对应,建议开始调优后,等调优周期结束再调整调优规则。
自定义调优触发后需要重启作业,因此会导致作业短暂停止处理数据。大状态的作业由于启停过程耗时较长,可能导致长时间停流,不建议开启自动扩缩。
自定义调优的开始和结束时间间隔最少为30分钟。
如果用户为 Jar 类型的作业开启了自动调优,请确认作业代码中未配置作业并行度,否则自动扩缩容将无法调整作业资源,即自动调优配置无法生效。如果作业代码中配置作业并行度想让调优生效,可在作业参数 > 高级参数中设置参数忽略代码中配置作业并行度,以作业参数中并行度为准。
execution.parallelism.disabled: true
由于集群资源限制,当前作业自定义调优过程为串行执行,因此不要为集群中所有作业开启自定义调优,否则会相互影响。
注意:
作业并行度最小降低到 1。TaskManager CU 数根据集群是否开启细粒度资源可以有不同的配置,开启细粒度资源则 CU 数可以为 0.25,0.5,1,2 否则 CU 数只能为 1。