如何理解Flink UI显示的反压状态,Sink反压OK时上游为何反压高
Flink反压瓶颈定位解答
先明确Flink 1.10的反压检测逻辑
- Flink 1.10的反压状态描述的是算子向下游发送数据的阻塞程度:如果显示
High,说明该算子的输出缓冲区已经被占满,无法向下游传输数据,本质是下游算子处理速度跟不上,反压向上传导的表现。 - 作为最下游节点的Sink算子没有下游接收方,不存在“向下游发送数据被阻塞”的情况,因此它的反压状态永远会显示为
OK,这个结果和Sink本身的处理性能没有直接关联。
作业瓶颈定位
结合你给出的算子链路:Kafka Source -> Map -> 数据库Sink,以及反压表现,实际的反压传导路径为:
Sink处理速度跟不上上游数据下发速度 -> Sink的输入缓冲区被占满 -> Map算子向下游写数据被阻塞,反压显示
High-> Source算子向下游写数据被阻塞,反压显示High
所以你最初的判断是正确的,数据库Sink就是真正的性能瓶颈,常见的优化方向可以参考:
- 调整Sink并行度,匹配数据库的写入能力上限
- 开启Sink的批量写入配置,降低单条写入的开销
- 检查数据库连接池配置、表索引配置,优化单条写入的耗时
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

