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)

Reply via email to