YufeiLiu created FLINK-26800: -------------------------------- Summary: write small data file using share write buffer manager Key: FLINK-26800 URL: https://issues.apache.org/jira/browse/FLINK-26800 Project: Flink Issue Type: Bug Components: Runtime / State Backends Affects Versions: 1.12.7 Reporter: YufeiLiu
When setting config {{state.backend.rocksdb.memory.fixed-per-slot}}, all rocksdb instances in same slot are using shared WriteBufferManager. I meet a extreme circumstances, there are 2 rocksdb using a WriteBufferManager size is 32M, if rocksdb-1 write (32*0.9)M data and won't have more data in a while, it won't trigger flush, then rocksdb-2 start writing data, it will trigger flush every single record and write many small file, spend a lot of time of backgroud compaction. rocksdb-2 only flush current CF data, it won't recovery until rocksdb-1 flush data in memtable. I can disable memory managed option to avoid this case, but I can't limit the memory usage. Maybe can create a tracker monitor all rocksdb memory usage, trigger a force flush if it's necessary? [1] RocksDB Write Buffer Manager https://github.com/facebook/rocksdb/wiki/Write-Buffer-Manager -- This message was sent by Atlassian Jira (v8.20.1#820001)