You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flink异步Checkpoint无法完成问题排查求助

错误日志

#0 - asynchronous part of checkpoint 11880 could not be completed.
java.util.concurrent.CancellationException: null
	at java.util.concurrent.FutureTask.report(FutureTask.java:121) ~[?:1.8.0_402]
	at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:1.8.0_402]
	at org.apache.flink.util.concurrent.FutureUtils.runIfNotDoneAndGet(FutureUtils.java:511) ~[flink-dist-1.18.1.jar:1.18.1]
	at org.apache.flink.streaming.api.operators.OperatorSnapshotFinalizer.<init>(OperatorSnapshotFinalizer.java:54) ~[flink-dist-1.18.1.jar:1.18.1]
	at org.apache.flink.streaming.runtime.tasks.AsyncCheckpointRunnable.finalizeNonFinishedSnapshots(AsyncCheckpointRunnable.java:191) ~[flink-dist-1.18.1.jar:1.18.1]
	at org.apache.flink.streaming.runtime.tasks.AsyncCheckpointRunnable.run(AsyncCheckpointRunnable.java:124) [flink-dist-1.18.1.jar:1.18.1]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_402]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_402]
	at java.lang.Thread.run(T

已做排查

  • 检查Flink WebUI,确认无背压情况
  • 当前使用RocksDB StateBackend,Checkpoint实际存储在EFS
  • 怀疑RocksDB压缩或序列化操作耗时过长,但DEBUG/TRACE日志及已开启的RocksDB日志未提供有效线索
  • 临时解决方案:延长Checkpoint超时时间,需定位失败根本原因

当前Checkpoint配置

state.checkpoints.dir: file:///opt/flink/conf/checkpoints
state.storage.fs.memory-threshold: 0
state.backend.type: rocksdb
state.backend.incremental: true
execution.checkpointing.checkpoints-after-tasks-finish.enabled: true
execution.checkpointing.interval: 10000
execution.checkpointing.externalized-checkpoint-retention: DELETE_ON_CANCELLATION
execution.checkpointing.max-concurrent-checkpoints: 1
execution.checkpointing.min-pause: 5000
execution.checkpointing.mode: EXACTLY_ONCE
execution.checkpointing.timeout: 60000
execution.checkpointing.tolerable-failed-checkpoints: 0

可能的根本原因分析

  • EFS存储性能瓶颈:虽然配置路径显示本地,但实际存储在EFS。EFS的读写延迟、吞吐量波动会直接拖慢Checkpoint持久化速度,尤其是增量Checkpoint需要频繁读写差异数据,容易触发异步任务超时取消。
  • RocksDB配置未优化:
    • state.storage.fs.memory-threshold: 0意味着所有状态直接写入RocksDB,无内存缓存层,大幅增加磁盘IO开销
    • 增量Checkpoint模式下,若RocksDB压缩策略过于激进,会在快照生成阶段消耗大量CPU资源,拖慢序列化/压缩过程
    • 未配置RocksDB异步刷盘、专用线程池等参数,导致序列化/压缩操作阻塞主线程
  • Checkpoint时间窗口不合理:10秒间隔+5秒最小暂停,留给单个Checkpoint的实际完成窗口被压缩,若异步阶段因资源不足无法按时完成,最终会被取消
  • JVM资源限制:TaskManager堆内存或直接内存不足,导致RocksDB在序列化/压缩时频繁触发GC,拖慢整体处理速度

内容的提问来源于stack exchange,提问作者Banupriya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 16:04:58