跳到主要内容
版本:6.3.0

ETL运行

问题场景1:单个ETL更新任务CPU占用时间长

问题原因

建议查看指标「最近30天CPU占用时长TOP20的ETL(CPU占用时长≥10s)」,若单个ETL的CPU占用时长时间超过60分钟,说明ETL运行占用CPU的时间过长。可能造成该现象的原因如下:

(1)ETL更新任务发生阻塞,无法正常运行。

(2)ETL更新任务运行逻辑复杂(输出数据集多等情况),导致更新时间长(>60min)。

(3)ETL更新任务运行同时,有较多其他任务并行占用资源,导致ETL更新任务排队时间长或运行任务受影响。

排查思路

我们建议您按照如下思路逐步排查:

1)检查此类ETL更新任务的运行时长是否异常。

您可点击ETL名称跳转,查看ETL运行记录,观察历史时长是否都需要类似时间。

?优化措施

若属于非预期作业时长,建议通过日志查询,具体排查占用时间长的原因。可在“管理员设置-运维管理-参数配置”中配置任务最大运行时长,限制异常任务占用资源。

2)检查此类ETL更新时间是否有优化空间。

?优化措施

建议多个输出数据集节点的情况下:

a. 若在ETL中共用的节点较多,则将共用部分单独做ETL处理,并把该ETL的输出数据集作为原ETL的输入数据集,避免相同数据的重复计算;

b. 若ETL中共用的节点较少,则将不同处理过程分拆成独立的ETL,使多个ETL并行更新,提升运算效率。

3)检查此类ETL更新任务运行时间是否有优化空间。

?优化措施

a. 在不影响业务的前提下,了解此类任务是否有上游依赖,无上游依赖的任务建议调整至低峰时段运行;

b. 参考指标「节点CPU使用率各时间段趋势图」和「服务器CPU负载(System Load)趋势图」,了解CPU使用率高峰、CPU负载高峰,建议此类任务运行避开以上时段。

问题场景2:ETL非预期作业较多

问题原因

建议查看指标「昨日ETL运行时间分布」,若实际ETL运行数量超过计划数量2倍以上,说明昨日ETL非预期作业较多。可能造成该现象的原因如下:

(1)问题时段有大量手动触发的ETL运行任务。

(2)由于前面时间段任务堆积导致前时段的定时任务延期至本时段运行。

(3)ETL设置了级联更新,一个ETL/数据集的更新完成会触发多个ETL的更新,加剧了级联更新后ETL更新任务堆积的情况。

排查思路

我们建议您按照如下思路逐步排查:

(1)排查问题时段内是否有大量手动触发的ETL运行任务。

观察「昨日ETL运行时间分布图」中,有警告标志的柱子,点击下钻后,查看「用户」列是否为自动更新。

(2)排查问题时段内是否有大量级联更新ETL运行任务。

观察「昨日ETL运行时间分布图」中,有警告标志的柱子,点击下钻后,选择操作对象跳转,查看资源血缘。在资源血缘中,可追溯该ETL运行是否是由上游任务触发。

(3)排查问题时段内是否有大任务阻塞,导致定时任务延期进行。

观察「昨日ETL运行时间分布图」中,有警告标志前的柱子,点击下钻后,对运行时长进行排序。

?优化措施

若有运行时长超过60min的任务,建议按照「单个ETL更新任务CPU占用时间长」场景提供的处理方式进行调整。

(4)排查问题时段ETL任务排队时间是否较长(排队时间>30min)。

观察「昨日ETL运行时间分布图」中,有警告标志前的柱子,点击下钻后,观察任务排队时间。

?优化措施

若排队时间长(排队时间>30min),可观察该时段内存使用率情况,如未触达95%警戒线,建议咨询观远数据,确认是否可前往“管理员设置-运维管理-参数配置”中将ETL调度任务并行数调大。若调大后仍无法解决,建议考虑扩容,具体扩容方案请联系观远数据进行评估。

其他建议

参考指标「节点CPU使用率各时间段趋势图」和「服务器CPU负载(System Load)趋势图」,了解CPU使用率高峰、CPU负载高峰,建议手动触发的ETL、复杂ETL或下游级联较多的任务运行避开以上时段。