我有一个3K消息/秒的系统。流中的许多状态和窗口。
目前我的管理内存使用只有84MB,虽然我为它保留了15GB。在Flink的web UI上显示为84.4 MB/14.8 GB。Rocksdb不使用它来缓存和缓冲。你能告诉我为什么吗?下面你可以看到我的配置。
taskmanager.memory.process.size: 51912m
taskmanager.memory.managed.fraction : 0.2
taskmanager.numberOfTaskSlots: 360
state.backend: rocksdb
state.backend.rocksdb.localdir: /home/asi/rockdbtmp/datadir
state.backend.rocksdb.thread.num: 4
state.backend.rocksdb.log.dir: /home/asi/flink-1.15.2/log/rocksdb
state.backend.rocksdb.memory.managed: true
state.backend.incremental: true
state.backend.rocksdb.memory.write-buffer-ratio: 0.5
state.backend.rocksdb.memory.high-prio-pool-ratio: 0.1
同样,如果我使用hashmap后端,我的系统工作没有任何问题,但如果我把它改为rocksdb,它在几秒钟内锁定。我想这也和缓冲问题有关。
感谢问题是numberOfTaskSlots。所以总的托管内存是27GB, taskSlot是360。因此,一个任务只使用27GB/360内存。我只是把它改成了36