flink反压的监控

  反压在流式系统中是一种很是重要的机制,主要做用是当系统中下游算子的处理速度降低,致使数据处理速率低于数据接入的速率时,经过反向背压的方式让数据接入的速率降低,从而避免大量数据积压在flink系统中,最后系统没法正常运行。flink具备自然的反压机制,不须要经过额外的配置就可以完成反压处理。web

  当在flinkUI中切换到Backpressure页签时,flink才会对整个job触发反压数据的采集,反压过程对系统有必定的影响,主要由于jvm进程采样成本较高。flink经过在TaskManager中采样LocalBufferPool内存块上的每一个Task的stackTrace实现。默认状况下,TaskManager会触发一百次采样,而后将采样的结果汇报给JobManager,最终经过JobManager进行汇总计算,得出反压比例并在页面中展现,反压比例等于反压出现次数/采样次数。并发

  经过在页面中点击Back Pressure页签触发反压检测,整个采样过程大约会持续5s,每次采样的间隔为50ms,持续100次。同时,为了不让TaskManager过多地采样StackTrace,即便页面被刷新,也要等待60s后才能触发下一次Sampling过程。  jvm

  经过触发jvm进程采样的方式获取到反压监控数据,同时flink会将反压状态分为三个级别,分别为OK、LOW、HIGH级别,其中OK对应的反压比例为大于0小于10%,LOW对应的反压比例为10%-50%,HIGH对应的反压比例大于50%小于100%。优化

  若是对task进行抽样显示,全部的subtasks状态均显示OK,表示未发生大规模的数据堵塞,系统总体运行正常,不须要作任何调整。进程

  若是全部的subtasks状态均显示HIGH,表示系统触发了比较多的反压,须要适当的增长subtask并发度或者下降数据生产速度,不然通过长时间的运行后,系统中处理的数据将出现比较严重的超时现象。内存

  针对反压的优化,用户能够调整如下参数:监控

  • web.backpressure.cleanup-interval:当启动反压数据采集后,须要等待页面并获取反压数据的时间长度,默认60s
  • web.backpressure.delay-between-samples:Stack Trace抽样到确认反压状态之间的时延,默认为50ms
  • web.backpressure.num-sample:设定Stack Trace抽样数以肯定反压状态,默认为100
相关文章
相关标签/搜索