
您可以使用 Dataflow 瓶颈检测器诊断 Dataflow 流处理作业中的进度阻塞问题,并优化流水线性能。检测器会自动突出显示数据流水线中限制吞吐量并导致积压的组件。
通过确定执行延迟的确切位置和可能原因,瓶颈检测器可让您排查复杂的 Apache Beam 流处理流水线问题,而无需进行试错猜测。
瓶颈检测的工作原理
流处理流水线通常由一系列通过队列连接的步骤组成。数据按顺序从上游来源流经中间转换到下游接收器。
在许多流水线中,整体吞吐量受单个组件或
步骤的限制,从而形成 瓶颈 ,或导致作业进度减慢。如果下游组件处理数据的速度低于上游组件生成数据的速度,则它们之间的队列会开始填满。例如,如果上游流处理 Shuffle 组件生成数据的速度快于下游用户定义的 DoFn 处理数据的速度,则队列会填满。
随着时间的推移,这种延迟会影响流水线中的所有步骤。上游的积压会增加,最终限制流水线从原始来源注入和处理输入的速度。这种行为称为 积压传播 。
发生积压传播时,流水线的多个阶段可能会显示运行状况不佳或速度缓慢,即使只有一个步骤导致了底层限制也是如此。瓶颈检测器会持续监控所有组件(包括以下组件)的执行延迟:
- 流处理 Shuffle
- 用户定义的函数(
DoFn线程) - 持久状态提交
当组件的处理延迟超过 5 分钟时,Dataflow 瓶颈检测器会将其注册为瓶颈。它会在作业执行图中突出显示该步骤,并提供详细的诊断信息。
瓶颈的种类

当瓶颈处于活跃状态时,瓶颈检测器会将其归类为以下状态之一:
- 处理卡住,没有任何进展:流水线的进度 在受影响的步骤中完全停止。
- 正在进行处理,但进度落后:当前步骤 正在运行,但处理传入数据的速度低于数据到达的速度, 导致积压不断增加。
- 正在进行处理,但一直存在积压:该步骤处理 数据的速度与传入数据的速度相同。积压没有增加,但仍处于较高水平。
- 正在进行处理,且积压正在减少:该步骤正在 成功清除积压。如果您启动的流水线存在积压,则此状态是正常状态,无需干预。
如需详细了解如何查看瓶颈检测器诊断信息以及如何 解决这些问题,请参阅 检测和解决瓶颈。
后续步骤
- 了解如何 检测和解决 Dataflow 流水线瓶颈。
- 查看 排查流处理作业缓慢或卡住的问题。
- 如需进行高级性能分析,请参阅 使用 Cloud Profiler 监控流水线性能。