Flink Cluster 1.13.1流作业出现Lost leadership报错如何解决
Flink 1.13.1流作业Lost leadership问题排查与解决方案
你遇到的报错本质是TaskExecutor检测到对应作业的JobMaster节点丢失了ZooKeeper领导权,触发了集群主备切换,作业会进入故障恢复流程,恢复耗时过长就会导致处理时效延迟。每月固定发生一次通常和集群周期性运维动作、资源波动有关,可按照以下方向排查修复:
排查方向
- 排查ZooKeeper集群状态与配置
首先对齐故障发生时间,确认ZooKeeper集群是否存在每月固定的快照清理、节点重启、磁盘巡检等运维动作,这类操作会导致ZK集群短时间响应变慢,触发Flink侧会话断连。其次检查flink-conf.yaml中high-availability.zookeeper.client.session-timeout配置,默认值仅为60s,若ZK集群本身网络延迟或IO抖动较高,很容易超过会话超时阈值,触发领导权丢失。 - 排查JobManager节点运行状态
拉取故障时间点JobManager所在节点的CPU、内存、磁盘IO、网络监控,确认是否存在CPU打满、长时间FullGC停顿、内存OOM、网络丢包的情况。Flink 1.13版本若JobManager堆内存配置不足,或者Session集群托管作业数量过多,很容易出现秒级GC停顿,超过ZK会话超时时间就会丢失领导权。 - 排查集群层面周期性操作
确认集群是否有每月固定的节点安全补丁更新、机房网络割接、资源规整等操作,这类操作如果导致JobManager节点短时间不可达,也会触发该问题。
修复方案
- 优化ZooKeeper交互配置
将high-availability.zookeeper.client.session-timeout调整为90s~120s,注意同步修改ZooKeeper集群的maxSessionTimeout配置(ZK默认最大会话超时为40s,必须大于Flink侧配置才会生效)。同时增加重试机制,配置high-availability.zookeeper.client.max-retries为5,high-availability.zookeeper.client.retry-wait为2s,降低临时网络波动的影响。 - 优化JobManager资源与GC配置
Session集群的JobManager堆内存建议至少配置8G以上,Per-Job/Application模式根据作业复杂度配置2G~4G堆内存。同时给JobManager添加G1回收器JVM参数:-XX:+UseG1GC -XX:MaxGCPauseMillis=200,降低GC停顿时长,避免超过ZK会话超时阈值。 - 加快作业故障恢复速度
开启作业增量Checkpoint,合理调整Checkpoint间隔,配置execution.savepoint-restore-mode为CLAIM,就算触发主备切换也能大幅减少作业恢复时间,避免错过处理时效。 - 升级Flink小版本
可将当前1.13.1版本升级到1.13.6终版,该版本修复了多个JobManager与ZK交互的内存泄漏、会话异常断连的已知Bug,能大幅降低该问题的发生概率。
内容的提问来源于stack exchange,提问作者Mehul
相关产品推荐
相关产品推荐

