Re:CUMULATE 窗口状态过大导致CK超时

2024-01-04 文章 ouywl
HI Jiaotong:
我的建议如下:
1. 本地存储使用高吞吐的SSD 
2. taskmanager.memory.managed.size 增加并且确保rocksdb memtable内存增加,减少rocksdb 刷磁盘的量
3. 如果有物化sink算子,关闭物化sink算子,减小state。


The following is the content of the forwarded email
From:"jiaot...@mail.jj.cn" 
To:user-zh 
Date:2024-01-05 09:41:01
Subject:CUMULATE 窗口状态过大导致CK超时

Hi All,
 我使用了CUMULATE( STEP => INTERVAL '1' MINUTES, SIZE => INTERVAL '1' DAYS) 
累积窗口,导致太多数据保存在状态中,即使开启了增量式RocksDB,但是当程序运行一段时间后,CK依然超时从而导致任务失败。因此想咨询对于这种大窗口大状态应该如何优化和使用。非常感谢
注:Flink版本 1.14.0



Re:CUMULATE 窗口状态过大导致CK超时

2024-01-04 文章 Xuyang
Hi,

一般来说,业务上如果坚持要使用大state,可以尝试下尽可能的给多并发(让每个并发都持有一部分key的state,摊平大state)和内存(尽可能减少访问落盘的数据,减少IO)来提高性能。
对于你这个case来说,CUMULATE Window 
TVF在实现层面已经尽可能将小窗口的数据进行merge了[1]。可以dump下来看下具体是哪里的问题,是不是有进一步优化的空间。


[1] 
https://github.com/apache/flink/blob/b25dfaee80727d6662a5fd445fe51cc139a8b9eb/flink-table/flink-table-runtime/src/main/java/org/apache/flink/table/runtime/operators/window/slicing/SliceAssigners.java#L340C15-L340C15

--

Best!
Xuyang





在 2024-01-05 09:41:01,"jiaot...@mail.jj.cn"  写道:
>Hi All,
> 我使用了CUMULATE( STEP => INTERVAL '1' MINUTES, SIZE => INTERVAL '1' 
> DAYS) 
> 累积窗口,导致太多数据保存在状态中,即使开启了增量式RocksDB,但是当程序运行一段时间后,CK依然超时从而导致任务失败。因此想咨询对于这种大窗口大状态应该如何优化和使用。非常感谢
>注:Flink版本 1.14.0