Flink资料(7) -- 背压监控
背压(backpressure)监控
---------------------------------------------------
Flink的web接口提供了监控运行job的背压行为的功能
一、背压(back pressure)
如果你看到了一个任务的back pressure警告(如过高),则意味着该任务产生数据的速度要高于下游Operator消化的速度。数据沿着job的数据流图向下游流动(如从source到sink),而背压则是沿着相反的方向传播,逆流而上。
以一个简单的Source -> Sink的job为例,如果看到了一个关于Source的警告,则意味着Sink消化数据的速度慢于Source产生数据的速度,而Sink向上游的Source产生背压。
二、取样线程(Sampling Threads)
背压的监控工作原理是从运行的任务重复地对堆栈轨迹(stack trace)取样。JobManager对运行Job的各任务重复触发Thread.getStackTrace()的调用。

图1 取样线程
如果取样显示一个任务线程卡在某个内部方法调用中(从网络栈中请求缓存空间),则意味着该任务面临着背压的影响。
默认地,对于每一个任务,JobManager会每隔50ms触发100次堆栈轨迹。我们在web接口中看到的比例说明了这些堆栈轨迹中有多少卡在了内部方法调用中,如0.01就表示100个堆栈轨迹中有一个卡在了方法调用中。背压的状态如下区分:
1. OK:0 <= Ratio <= 0.10
2. LOW:0.10 < Ratio <= 0.5
3. HIGH:0.50 < Ratio <= 1.0
为了使堆栈轨迹取样不对Task Manager产生太大负荷,web接口仅每60s才刷新一次样本。
三、配置
我们可以用如下配置关键字来设置Job Manager的样本数量:
1. jobmanager.web.backpressure.refresh-interval:已有样本过期并需要刷新时间间隔(默认:60000,1min)
2. jobmanager.web.backpressure.num-samples:确定背压所需取样的堆栈轨迹数量(默认:100)
3. jobmanager.web.backpressure.delay-between-samples:确定背压取样的时间区间(默认:50,50ms)
四、示例
web接口中,我们可以在"Job overview"旁边看到"Back pressure"选项卡
4.1 Sampling in progress
该状态意味着JobManager出发了一个运行中的任务的堆栈轨迹取样,默认配置下,该操作需要约5秒。
在此界面,我们点击某行,则会触发对该Operator的所有子任务的取样操作。

图2 Sampling in progress
4.2 背压状态
如果我们看到某任务的状态是OK,则表示没有背压的迹象。反之,HIGH则表示该任务正受到背压的影响。

图3-1 背压状态OK

图3-2 背压状态HIGH
Flink资料(7) -- 背压监控的更多相关文章
- flink反压的监控
反压在流式系统中是一种非常重要的机制,主要作用是当系统中下游算子的处理速度下降,导致数据处理速率低于数据接入的速率时,通过反向背压的方式让数据接入的速率下降,从而避免大量数据积压在flink系统中,最 ...
- Flink 中LatencyMarks延迟监控(源码分析)
流式计算中处理延迟是一个非常重要的监控metric flink中通过开启配置 metrics.latency.interval 来开启latency后就可以在metric中看到askManage ...
- flink的checkpoint页面监控
flink web页面中提供了针对Job Checkpoint相关的监控信息.Checkpoint监控页面共有overview.history.summary和configuration四个页签,分别 ...
- Flink资料(8) -- Flink代码贡献的指导及准则
本文翻译自Contributing Code ----------------------------------------- Apache Flink是由自愿的代码贡献者维护.优化及扩展的.Apa ...
- Flink资料(5) -- Job和调度
该文档翻译自Jobs and Scheduling ----------------------------------------------- 该文档简单描述了Flink是如何调度Job的,以及如 ...
- Flink资料(4) -- 类型抽取和序列化
类型抽取和序列化 本文翻译自Type Extraction and Serialization Flink处理类型的方式比较特殊,包括它自己的类型描述,一般类型抽取和类型序列化框架.该文档描述这些概念 ...
- Flink资料(3)-- Flink一般架构和处理模型
Flink一般架构和处理模型 本文翻译自General Architecture and Process Model ----------------------------------------- ...
- Flink资料(2)-- 数据流容错机制
数据流容错机制 该文档翻译自Data Streaming Fault Tolerance,文档描述flink在流式数据流图上的容错机制. ------------------------------- ...
- Flink资料(1)-- Flink基础概念(Basic Concept)
Flink基础概念 本文描述Flink的基础概念,翻译自https://ci.apache.org/projects/flink/flink-docs-release-1.0/concepts/con ...
随机推荐
- Silverlight学习(二)
好久没来写博客了,这期间经历了春节,也因为忙于一个项目,所以博客被疏忽了.最近一段时间一直在用silverlight做项目,从来一开始的不熟悉渐渐的开始上手.今天记录一下自己学习prism的一些sam ...
- 7.19 SQL——函数
select * from student select * from score select * from teacher select * from course select * from c ...
- openwrt 家用备忘
- Linux 安装Nginx详细图解教程
进入:/usr/java/nginx位置 下载nginx: wget http://nginx.org/download/nginx-1.8.0.tar.gz 下载openssl : wget htt ...
- @Html.ActionLink 添加样式 html标签
@Html.ActionLink(item.MessageTitle, "Detail", "News",new { MessageId = item.Mess ...
- Ubuntu下Geary安装
sudo add-apt-repository ppa:yorba/ppasudo apt-get updatesudo apt-get install geary
- 客户端数据持久化解决方案: localStorage
客户端数据持久化解决方案: localStorage localStorage主要用来替代cookie,解决cookie读写困难.容量有限的问题. localStorage有以下几个特点 localS ...
- 一步一步学习SignalR进行实时通信_5_Hub
原文:一步一步学习SignalR进行实时通信_5_Hub 一步一步学习SignalR进行实时通信\_5_Hub SignalR 一步一步学习SignalR进行实时通信_5_Hub 前言 Hub命名规则 ...
- node.js 入门教程(beginnder guide
非常好的教程: node入门: JavaScript与Node.js JavaScript与你 简短申明 服务器端JavaScript “Hello World” 一个完整的基于Node.js的web ...
- web本地存储-LocalStorage
LocalStorage是HTML5 提供的在客户端存储数据的方法.替代但不同于之前的globalStorage,规则作用范围事先已设定好,是同一个域名(子域无效),使用同一种协议,在同一个端口上.目 ...