5.3.3 任务性能
5.3.3.1 任务反压排查方案
5.3.3.1.1 任务反压的现象
反压是在Flink实时数据处理中经常遇到的问题,是在实时数据流的管道某个节点上游产生数据的速度大于该节点处理数据速度出现瓶颈。反压会从该节点向上游传递,一直到数据源,并降低数据源的摄入速度。这在流数据处理中非常常见,很多场景可以导致反压的出现,比如, GC导致短时间数据积压,数据的波动带来的一段时间内需处理的数据量有突增,任务负载大节点内存CPU使用率较高,以及任务checkpoint本身异常都可能造成反压。
具体到flflink任务上查看,出现反压的时候,在flflink UI上可以看到一个 task 发生 反压警告,意味着它生产数据的速率比下游 task 消费数据的速率要快。 在工作流中数据记录是从上游向下游流动的(例如:从 Source 到 Sink)。
以一个简单的 Source -> Sink job 为例。如果看到 Source 发生了警告,意味着 Sink 消费数据的速率比 Source 生产数据的速率要慢。 Sink 正在向上游的 Source 算子产生反压。
在Flink WebUI 集合了所有 subTasks 的反压和繁忙指标的最大值,并在 JobGraph 中将集合的值进行显示。除了显示原始的数值,tasks 也用颜色进行了标记,使检查更加容易。闲置的 tasks 为蓝色,完全被反压的 tasks 为黑色,完全繁忙的 tasks 被标记为红色。 中间的所有值都表示为这三种颜色之间的过渡色。
在Job Overview 旁的 Back Pressure 选项卡中,可以具体看到当前节点的backpressured(反压)和Busy情况来具体判断节点的反压情况。
如果你看到 subtasks 的状态为 OK 表示没有反压。HIGH 表示这个 subtask 被反压。状态用如下定义:
•OK: 0% <= 反压比例 <= 10%
•LOW: 10% < 反压比例 <= 50%
•HIGH: 50% < 反压比例 <= 100%
除此之外,你还可以找到每一个 subtask 被反压、闲置或是繁忙的时间百分比。
《企业级云原生白皮书项目实战》——第五章 大数据——5.3 实时计算Flink版——5.3.3 任务性能(2) https://developer.aliyun.com/article/1228338?groupCode=supportservice