Flink如何通过Flink Web UI 自带的反压监控面板来定位反压节点?
Flink Web UI 的反压监控提供了 SubTask 级别的反压监控,原理是通过周期 性对 Task 线程的栈信息采样,得到线程被阻塞在请求 Buffer(意味着被下游队列阻 塞)的频率来判断该节点是否处于反压状态。默认配置下,这个频率在 0.1 以下则为 OK,0.1 至 0.5 为 LOW,而超过 0.5 则为 HIGH。 如果处于反压状态,那么有两种可能性: 1. 该节点的发送速率跟不上它的产生数据速率。这一般会发生在一条输入多条 输出的 Operator(比如 flatmap)。 2. 下游的节点接受速率较慢,通过反压机制限制了该节点的发送速率。 如果是第一种状况,那么该节点则为反压的根源节点,它是从 Source Task 到 Sink Task 的第一个出现反压的节点。如果是第二种情况,则需要继续排查下游节点。 值得注意的是,反压的根源节点并不一定会在反压面板体现出高反压,因为反压 面板监控的是发送端,如果某个节点是性能瓶颈并不会导致它本身出现高反压,而是 导致它的上游出现高反压。总体来看,如果我们找到第一个出现反压的节点,那么反 压根源要么是就这个节点,要么是它紧接着的下游节点。 那么如果区分这两种状态呢?很遗憾只通过反压面板是无法直接判断的,我们还 需要结合 Metrics 或者其他监控手段来定位。此外如果作业的节点数很多或者并行度 很大,由于要采集所有 Task 的栈信息,反压面板的压力也会很大甚至不可用。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。