开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

flink 端到端延迟以及flinkcdc 同步mysql时的延迟存在突刺,怎么寻找排查原因?

一些相关配置:

  • promethues 配置:

以下延迟指标 都是flink 内部提供的相关指标,prometheusReporter 推送到pushgateway 的间隔是 60s , 具体配置如下:
图片1.png

prometheus 拉取间隔为 30s :
图片2.png

  • 状态后端Rocksdb配置:
    图片3.png

问题1 :flink 端到端延迟突刺

flink_taskmanager_job_latency_source_id_operator_id_operator_subtask_index_latency 指标用来检测端到端延迟,开启时的配置参数如下图:
图片4.png

任务1 :

  • 这个任务的sql 以及 dag 图如下 :图片6.png图片5.png
  • 通过对比发现 flink 端到端延迟从 source 到 sink 端延迟 与 source 到 join 算子的 延迟 图形一致,基本可以确定是延迟增大就是 flinkSQL中regular join阶段引起的,以下是 flink 到 join 算子的延迟监控图:图片7.png
    图片8.png
    大部分时间延迟都是在一个较小的范围 100ms 以内

  • 当前任务 join算子链的 flink_taskmanager_job_task_operator_numRecordsInPerSecond 指标,总体上在以下时间段在有数据的情况下每分钟 2-3 (0.033 * 60)条左右
    图片9.png

  • Checkpoint:
    图片10.png

图片11.png
当前任务是全量checkpoint,对于全量做checkpoint ,通过对比发现当延迟增大的时候,一般 checkpoint 时长也会很大(增量checkpoint 现象不明显)

其他状况:

  • 在历史数据中发现,当source 到join的延迟指标增大时,并没有发现存在输入,即下图情况:
    图片12.png
    图片13.png
    图片14.png
    去数据源kafka 中查询也并未查询到出现延迟时有数据输入
  • 此时的checkpoint如下:
    图片15.png

job2:

图片17.png

  • 这个任务的checkpoint 也是全量,但是状态更大,对应的端到端延迟的最大值以及突刺的平均值也更大图片18.png

图片19.png
图片20.png

job3:

图片21.png

  • 这个任务的checkpoint是增量的,
    图片22.png
  • 对应的 延迟和checkpoint 的关系如下:
    图片23.png

具体问题:

  • 对于以上3个任务,似乎状态越大,在regular join 阶段的延迟就会越大,但是也存在没有数据输入时端到端延迟飙高

问题2:flinkcdc 同步mysql 延迟

  • 当前使用的flink-sql-connector-mysql-cdc版本是 2.4.1
  • 使用的指标是 cdc 源码中提供的 currentFetchEventTimeLag这一指标来表示flinkcdc 同步时的 binlog 延迟,这一指标是从数据在数据库提交操作后生成的时间点到进入flinkcdc source 之间的时间差
  • 内网机器间的网络传输,通过 ping 主机,网络延迟较为稳定,大概在3ms左右,但是并没有对主机之间网络延时进行检测

例1 :

  • 延迟突刺达到 12s ,持续直到下一条数据到来 图片24.png

  • Source的数据的输入是较为稳定的大概是 2.0 * 60s = 120 图片25.png

  • writer 算子的numRecordsInPerSecond 指标如下图:图片26.png

例2 :

  • 通过source 算子的numRecordsInPerSecond 指标发现存在数据输入,但是延迟指标却一直保持图片27.png
    图片28.png

  • 而 writer 算子的numRecordsInPerSecond 指标则可以解释(所以这是为什么,是被过滤了吗,还是flinkcdc 心跳也算作 source 的输入吗)
    图片29.png

具体问题:

  • 影响currentFetchEventTimeLag 的因素相关的指标比较难找,去查找过对mysql监控的zabbix,没能找到相关的因素,可以从排查呢?

展开
收起
游客ww6d6yn35bupg 2024-01-29 17:29:02 156 0
0 条回答
写回答
取消 提交回答

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
    One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
    如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

    相关镜像