FLINK反压分析

测试反压可以快速的定位流处理系统的性能瓶颈所在。先在Kafka中积攒一批数据,然后在使用Flink消费,就好比水库泄洪,很容易找到下游性能薄弱的环节。

反压的可能原因

反压的原因可能会有:

  • 短时间的负载高峰,超过流处理系统极限
  • 下游sink负载变大,数据无法及时输出
  • GC压力过大,停顿时间太长
  • 某个算子作业过于复杂,执行耗时较长
  • 集群网络波动,上游传递给下游的网络通道受阻

定位方式

定位之前禁用掉OperatorChain,这样原本chain到一起的多个算子会分开,方便我们更精细的定位性能瓶颈。

  • 看页面:查看Flink Web UI中对应算子的Back Pressure页面,如果各个SubTask显示的结果为High,说明该算子存在反压情况。
  • 看监控:查看算子的inPoolUsage监控项。如果数值过高,说明存在反压。

找到反压算子之后,我们可以使用Flame Graph火焰图,来分析每个方法调用的耗时,从而找到耗时较长的方法。

开启火焰图的方法:

flink-conf.yaml中配置。

参数默认值含义
rest.flamegraph.enabledfalse是否开启火焰图
rest.flamegraph.cleanup-interval10min统计信息的缓存清除时间
rest.flamegraph.delay-between-samples50 ms构建 FlameGraph 的单个堆栈跟踪样本之间的延迟
rest.flamegraph.num-samples100构建flamegraph的采样数
rest.flamegraph.refresh-interval1 min火焰图刷新的时间间隔
rest.flamegraph.stack-depth100创建FlameGraphs 的堆栈跟踪的最大深度

一些通用的方法:

  • 优化反压算子的业务逻辑代码
  • 调用外部系统使用AsyncFunction
  • 增大TM的内存资源
  • 增大反压算子的并行度
  • 减少反压上游算子的并行度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值