Flink背压指示 - 如何识别其根本原因

时间:2018-02-19 11:57:00

标签: apache-flink

如何确定任务中背压的根本原因? (即多操作员任务的哪个操作员正在引起背压)

  • 是否有相关日志? (跟踪StackTraceSampleCoordinator失败 - "收到后期堆栈跟踪样本"没有出现在任何日志中)
  • 我可以使用的其他工具吗?

=====================================

以下是我所擅长的: 在Flink作业执行期间,正在显示背压指示。 据我了解,造成的任务是继续最新的"具有BP指示的任务。 此任务正在运行多个运算符:reduce,map和sink。 分析工作指标并没有帮助 - 从前面的运营商那里得到的是进入这个运营商的内容。 对于以下工作计划的第1和第2任务,将显示背压指示:

[Source: Custom Source -> Filter -> (Flat Map -> Timestamps/Watermarks)] -> [Timestamps/Watermarks] -> [TriggerWindow(TumblingEventTimeWindows(300000), ReducingStateDescriptor{serializer=org.apache.flink.api.java.typeutils.runtime.TupleSerializer@f812e02f, reduceFunction=EntityReducer@2d19244c}, EventTimeTrigger(), WindowedStream.reduce(WindowedStream.java:300)) -> Map -> Sink: Unnamed]

  • 其中[]表示任务。

1 个答案:

答案 0 :(得分:0)

在Flink用户界面中,任务的背压表示任务对collect()的调用正在阻止。因此,如果任务1&在你的例子中有2个背压,那么任务3中的某些东西可能无法跟上你的来源。

请注意,如果您的来源正在合成事件而没有延迟,但您有一个真正的接收器,那么您将始终看到背压,因为接收器成为瓶颈。有关您的实际来源和详细信息接收器在这里很有用。

要深入了解任务3内部发生的事情,您可以连接类似YourKit的内容来监控该任务中各种(流水线)操作的实际CPU使用情况。或者只是kill -QUIT <taskmanager pid>几次,看看哪些线程被阻止/正在进行实际工作。