赞
踩
通过了解反压模型,反压的观察方法,可以定位到出现反压的算子,进而可以具体分析出现反压的原因,以便调优。
flink 版本1.12.5
以一个简单的 Source -> Sink Job 为例:
如果看到 Source 发生了警告,意味着 Sink 消费数据的速率比 Source 生产数据的速率要慢。 Sink 正在向上游的 Source 算子产生反压。
JobManager 对每个Task重复调用 Task.isBackPressured(),来监控每个Task的反压。
反压的判断是基于数据输出的Buffer可用性进行判断的,如果一个Buffer不可用,表明Task被反压了。
反压下的自然降速
当下游算子消费上游算子的buffer变慢时,上游的buffer不能及时回收过来,buffer在不可用的时间里,上游算子就接收不到数据,此时就形成了自然降速。
反压监控参数
参数 | 解释 |
---|---|
web.backpressure.refresh-interval | 有效的反压结果被废弃并重新进行采样的时间间隔(默认: 60000, 1 min) |
web.backpressure.num-samples | 用于确定反压采样的样本数 (默认: 100) |
web.backpressure.delay-between-samples | 用于确定反压采样的间隔时间 (默认: 50, 50 ms) |
jobManager的采样频率
默认情况下,JobManager触发100次采样,然后每隔50ms来确定反压。如果Ratio=0.01表示100个样本中只有1个反压了。
为了不因为采样导致TaskManager负载过重,Web页面仅在60秒后重新采样。
当反压比例超过0.5时,说明上游算子堵塞的比较厉害了,这时flink会自动降低数据拉取的频率,用来减轻反压现象,但这会造成一定程度的性能下降。
如果出现发反压,那么反压的根节点可能存在于
一般情况下,繁忙程度接近100%,并导致上游算子反压程度接近100%的节点,就是反压产生的根节点。
如果source端(还包括维表关联时的维表)或sink端读写性能比较低,需要检查第三方组件是否是性能瓶颈的主要原因。
参考:
https://nightlies.apache.org/flink/flink-docs-release-1.12/zh/ops/monitoring/back_pressure.html
https://zhuanlan.zhihu.com/p/424093505
https://blog.csdn.net/Johnson8702/article/details/123841740
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。