作业智能诊断

本文为您介绍MaxCompute SQL作业的智能诊断功能,旨在尽可能提供诊断结果和建议,以协助您解决作业报错问题或提升查询性能,包括如何查看诊断结果和建议,以及解读分析结果。鉴于查询性能受多种因素影响,智能诊断仅提供整体查询性能的部分异常及建议。

有关更全面的作业诊断及调优信息,详情请参见Logview诊断实践SQL调优

使用限制

当前仅支持对SQL作业进行诊断。

查看智能诊断结果及建议

  1. 登录MaxCompute控制台,在左上角选择所属地域。

  2. 在左侧导航栏单击工作区 > 作业运维,进入作业运维页面。

    说明

    查询作业时间范围默认设定为1小时,您可以根据项目作业运行的实际情况进行选择调整。

  3. 单击目标作业智能诊断列的诊断结果标签,可跳转至作业洞察页面,在作业概览页签下查看详细的诊断结果说明以及优化建议指导。

诊断结果说明

  • 智能诊断列为空,存在以下情形之一。

    • 作业运行正常,未诊断出异常项。

    • 作业正在运行中或刚刚结束,无法实时展示诊断结果。

    • 在2023年11月01日之前运行的作业。

    • 在中国香港、华东2金融云、华北2金融云(邀测)、华北2阿里政务云1、华南1金融云、日本(东京)、新加坡、马来西亚(吉隆坡)、印度尼西亚(雅加达)、德国(法兰克福)、英国(伦敦)、美国(硅谷)、美国(弗吉尼亚)、阿联酋(迪拜)、沙特(利雅得)以上地域运行的SQL作业。

    若要查看详细的诊断结果,您可以在作业运维页面单击目标作业操作列的洞察,手动触发诊断。

  • 红色标签表示作业报错信息诊断结果,橙色标签表示作业性能诊断结果。

解读智能诊断结果

以下为您介绍SQL作业智能诊断结果的含义以及解决方案。

资源不足

当作业使用的计算资源量持续低于请求计算资源量的95%且超过5分钟,则被判定为资源不足。

  • 对于使用按量付费计算资源运行的作业,由于按量付费资源池为共享型,计算作业无法指定用量,且按需抢占资源。若瞬时作业数量过多,存在因众多用户抢占而无法满足请求的资源量,从而导致作业资源不足的情况。

  • 对于使用包年包月计算资源的作业,由于总体作业运行数据量大、申请资源多,以及作业优先级低,导致该作业出现资源等待情况。

此时您可以前往目标作业的作业洞察页面,在资源消耗页签查看作业资源消耗情况及某时刻计算Quota的资源分配情况,以判断导致资源不足的具体原因。然后依据业务情况优化任务执行,进行作业优先级调整或计算资源管理。

数据倾斜

数据倾斜是大数据计算一个常见的问题,通常表现为作业的执行进度停留在99%,这使人产生作业执行被卡住的印象。这一现象源于数据分布不均匀,导致部分Worker迅速完成计算,而另一些Worker却需要运行较长时间处理。在数据量呈爆炸式增长的大数据时代,数据倾斜问题会严重影响分布式程序的执行效率。因此必须尽早识别出数据倾斜问题,进而分析其产生原因并进行排查与解决。

MaxCompute根据以下标准判定作业是否存在数据倾斜问题:

  • 耗时最长的Worker运行时间大于等于所有Worker平均运行时间3倍,且平均运行时长大于30秒。

  • 存在输入记录数大于等于所有Worker平均输入记录数3倍的Worker。

MaxCompute提供了发生数据倾斜的节点(Worker)名称,以便于您后续通过LogView进行排查及调优,详情请参见使用Logview查看作业运行信息

关于更多数据倾斜场景以及对应的解决方案信息,详情请参见数据倾斜调优

数据膨胀

当作业的输出记录数超过输入记录数的10倍时,该Fuxi Task被判定为存在数据膨胀问题。

MaxCompute提供了发生数据膨胀的Fuxi Task名称,以便于您后续通过LogView进行排查及调优,详情请参见使用Logview查看作业运行信息

关于更多产生数据膨胀的原因和处理措施信息,详情请参见数据膨胀优化

模式回退

MaxCompute作业运行的模式有查询加速(MCQA)模式和普通模式。

  • 对于数据量较大且不需要返回查询结果的作业,仅可采用普通模式。因此,在资源和作业都正常的情况下,作业运行时长通常不会出现较大波动。

  • 对于数据量较小的交互式查询作业,通常会触发查询加速模式运行,该模式下的作业执行速度比普通作业快。而MaxCompute并不保证作业每次都能触发进入查询加速模式,因此可能出现查询加速作业转至普通作业,进而导致作业运行时长未能达到预期。

MaxCompute根据作业出现的Task Rerun子状态,判定作业是否存在模式回退问题。您可选择在作业代码首行添加set odps.service.mode=off;直接让作业采用普通模式运行,从而避免尝试使用查询加速模式而导致失败和时间浪费。

作业报错信息诊断

对于运行失败的作业,MaxCompute会根据错误信息匹配报错原因类别,并提供相应的错误描述及解决方案,当前仅覆盖了部分SQL类报错,对于未能提供诊断结果的失败作业,需要您自行查阅错误码,以便进行问题的定位和解决方案的查询。

您有任何相关问题或需要协助,可以通过填写钉钉群申请表单加入MaxCompute开发者社区群(钉钉群号:11782920)或您的专属钉群等方式联系我们。

相关文档