如何确定任务中背压的根本原因? (即多操作员任务的哪个操作员正在引起背压)
=====================================
以下是我所擅长的: 在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]
答案 0 :(得分:0)
在Flink用户界面中,任务的背压表示任务对collect()
的调用正在阻止。因此,如果任务1&在你的例子中有2个背压,那么任务3中的某些东西可能无法跟上你的来源。
请注意,如果您的来源正在合成事件而没有延迟,但您有一个真正的接收器,那么您将始终看到背压,因为接收器成为瓶颈。有关您的实际来源和详细信息接收器在这里很有用。
要深入了解任务3内部发生的事情,您可以连接类似YourKit的内容来监控该任务中各种(流水线)操作的实际CPU使用情况。或者只是kill -QUIT <taskmanager pid>
几次,看看哪些线程被阻止/正在进行实际工作。