本页面介绍如何排查 Dataflow 批量作业缓慢或卡住的常见原因。
如果批量作业运行缓慢或卡住,请使用执行详细信息标签页查找有关作业的更多信息,并找出导致瓶颈的阶段或工作器。
识别根本原因
检查作业在工作器启动期间是否遇到问题。如需了解详情,请参阅同步 Pod 时出错。
如需验证作业是否已开始处理数据,请在 job-message 日志中查找以下日志条目:
All workers have finished the startup processes and began to receive work requests
如需比较不同作业之间的作业性能,请确保输入数据量、工作器配置、自动扩缩行为和 Dataflow Shuffle 设置相同。
检查 job-message 日志中是否存在配额限制、缺货问题或 IP 地址用尽等问题。
查找作业中的任何 Straggler。如需了解详情,请参阅排查批量作业中的 Straggler 问题。
检查吞吐量、CPU 和内存利用率指标。
检查工作器日志中是否存在警告和错误。
- 如果工作器日志包含错误,请查看堆栈轨迹。调查该错误是否是由代码中的 bug 导致的。
- 查找 Dataflow 错误。请参阅排查 Dataflow 错误。
- 查找内存不足错误,这可能会导致流水线卡住。如果您看到内存不足错误,请按照排查 Dataflow 内存不足错误中的步骤操作。
- 如需识别缓慢或卡住的步骤,请检查工作器日志中是否存在
Operation ongoing
消息。查看堆栈轨迹,了解步骤花费时间的位置。如需了解详情,请参阅处理卡住或操作正在进行。
检查热键。
如果您未使用 Dataflow Shuffle,请检查Shuffler 日志中是否存在 shuffle 操作期间的警告和错误。如果您在端口 12345 或 12346 上看到 RPC 超时错误,则您的作业可能缺少防火墙规则。请参阅 Dataflow 的防火墙规则。
如果启用了 Runner v2,请检查自动化测试框架日志中是否存在错误。如需了解详情,请参阅 Runner v2 问题排查。
识别 Straggler
Straggler 是一种工作项,与阶段中的其他工作项相比速度较慢。如需了解如何识别和修复 Straggler,请参阅排查批处理作业中的 Straggler 问题。
识别缓慢或卡住的阶段
如需识别缓慢或卡住的阶段,请使用阶段进度视图。 较长的柱形表示阶段需要较多时间。使用此视图可以识别流水线中最慢的阶段。
找到瓶颈阶段后,您可以执行以下步骤:
- 识别该阶段中的滞后工作器。
- 如果没有滞后工作器,请使用阶段信息面板识别最慢的步骤。使用此信息识别用户代码优化的候选对象。
- 如需找出并行性瓶颈,请使用 Dataflow 监控指标。
识别滞后的工作器
如需识别特定阶段的滞后工作器,请使用工作器进度视图。此视图会显示所有工作器是否会一直处理工作,直到阶段结束或者单个工作器卡在延迟任务上。如果您发现滞后的工作器,请执行以下步骤:
- 查看该工作器的日志文件。如需了解详情,请参阅监控和查看流水线日志。
- 查看滞后工作器的 CPU 利用率指标和工作器进度详细信息。如果您发现该工作器的日志文件中 CPU 利用率异常高或低,请查看以下问题:
用于调试的工具
如果流水线运行缓慢或卡住,以下工具可帮助您诊断问题。
- 如需关联突发事件并识别瓶颈,请使用 Cloud Monitoring for Dataflow。
- 如需监控流水线性能,请使用 Cloud Profiler。
- 某些转换比其他转换更适合用于高容量流水线。日志消息可以识别批处理或流式处理流水线中卡住的用户转换。
- 如需详细了解卡住的作业,请使用 Dataflow 作业指标。以下列表包含有用的指标:
- 积压字节数指标 (
backlog_bytes
) 按阶段衡量未得到处理的输入量(以字节为单位)。使用此指标查找无吞吐量的组合步骤。 类似地,积压元素指标 (backlog_elements
) 用于衡量一个阶段中未得到处理的输入元素数量。 - 处理并行键 (
processing_parallelism_keys
) 指标用于衡量流水线特定阶段在过去 5 分钟内的并行处理键数。使用此指标可通过以下方式进行调查:- 将问题范围缩小到特定阶段,并确认热键警告,例如
A hot key ... was detected
。 - 找出由并行性不足引起的吞吐量瓶颈。 这些瓶颈可能会导致流水线运行缓慢或卡住。
- 将问题范围缩小到特定阶段,并确认热键警告,例如
- 系统延迟时间指标 (
system_lag
) 和每个阶段的系统延迟时间指标 (per_stage_system_lag
) 用于衡量某个数据项已处理或等待处理的最长时间。使用这些指标来识别数据源中效率低下的阶段和瓶颈。
- 积压字节数指标 (
如需了解 Dataflow 监控网页界面中未包含的其他指标,请参阅 Google Cloud 指标中 Dataflow 指标的完整列表。