Hi 对于已经改为at least once的checkpoint,其在checkpoint时对于作业吞吐的影响只有task 同步阶段的snapshot,这个时间段的snapshot由于与task的主线程的数据访问持有同一把锁,会影响主线程的数据处理。但是就算这样,我也很怀疑checkpoint本身并不是导致早上10点高峰期无法运行的罪魁祸首。 使用异步的,支持增量的state backend (例如RocksDBStateBackend)会大大缓解该问题。 建议排查思路:
1. 检查使用的state backend类型 2. 检查是否存在sync阶段checkpoint用时久的问题(可以观察WEB UI上的checkpoint部分,看sync阶段的耗时) 3. 借助jstack等工具,检查执行checkpoint时,TM上的task执行逻辑,判断是哪里消耗CPU 祝好 唐云 ________________________________ From: LakeShen <[email protected]> Sent: Wednesday, August 26, 2020 10:00 To: user-zh <[email protected]> Subject: Re: flink checkpoint导致反压严重 Hi zhanglachun, 你们使用 checkpoint 的方式是什么?是否有 full gc 的情况呢 Best, LakeShen 徐骁 <[email protected]> 于2020年8月26日周三 上午2:10写道: > input > .keyBy(<key selector>) > .timeWindow(<duration>) > .reduce(new MyReduceFunction(), new MyProcessWindowFunction()); > > 可以看一下官网的 reduce 用法, 可以在数据进入窗口的时候进行处理(排序), 而没必要等到 window 结束后再进行 这样可以把时间分散到 > window 里面 >
