通用

  • 及时发现。如何及时发现 flink 慢
    • source 延迟。如消费 kafka topic,可以从 kafka 收到告警消费延迟,或者 flink 任务自己有监控 source 延迟
    • 反压。某个算子出现反压情况
  • 问题原因
    • source 端。检查上游数据源和 source 并行度。
      • 如读取 kafka topic 时,需确保 topic partition 设置合理,因为 flink source 最大并行度即为 kafka partition 数目,kafka topic partition 过小,并行度上不来消费慢。随着业务流量增长,kafka topic partition 数量也需及时调整。
      • 检查 source 并行度,查看是否并行度过小,消费不过来。
      • 检测 source 数据源集群情况,CPU、网络、磁盘IO 等,是否能支持消费
    • sink 端。检测下游数据源、sink 并行度和 sink 配置
      • 检测下游数据源集群情况,如 mysql,查看 CPU、网络、磁盘IO 是否。
      • 检测 sink 端并行度,查看是否并行度过小,消费不过来。
      • 检测 sink 端配置参数。如 jdbc 配置,每满 1000 条或到达 10s 批量执行一次。
    • 中间端。
      • 维表 join。是否维表关联慢,使用 redis 或 guava 缓存优化维表关联,或启用
      • 多流 join。
      • redis 慢。为了确保 flink 任务重启后一些数据不丢,将一些数据存储到了 redis 中,在流量比较大的时候,redis 的访问成为性能瓶颈
      • checkpoint 慢。checkpoint 耗时长,超过 timeout 配置,一直失败
      • 数据倾斜。个别 subTask 处理慢。
      • window 窗口慢。窗口不触发。
    • 任务在报错,反复重启,已经宕机
  • 解决办法