Appearance
Flink 状态、反压和 Checkpoint 调优:为什么任务没挂,延迟却越来越高
Flink 线上任务的典型问题之一是:
- 任务没挂
- 但延迟越来越高
这类问题通常和三件事关系很大:
- 状态
- 反压
- Checkpoint
先说结论
排查 Flink 实时任务抖动时,更实用的顺序通常是:
- 先看有没有反压
- 再看状态是不是过大
- 再看 Checkpoint 是否频繁超时或变慢
一、反压为什么这么关键
因为它很像一条流式链路里的:
- 拥堵信号
只要下游处理不过来,上游很快也会被拖慢。
二、状态为什么会成为长期负担
因为状态不是只影响功能正确性,还会影响:
- 内存
- 恢复时间
- Checkpoint 成本
状态一旦膨胀,任务即使暂时能跑,也会越来越不稳。
三、Checkpoint 为什么会越做越重
常见原因包括:
- 状态太大
- 存储链路慢
- 任务本身已经处在反压中
这时延迟和恢复能力都会一起变差。
一句话总结
Flink 任务延迟抖动时,真正该先看的通常不是业务代码本身,而是:
- 反压有没有起来
- 状态有没有失控
- Checkpoint 有没有变成系统负担