我正在使用基于容器环境的RocksDB增量Checkpoint技术,但是我发现RocksDB在增量Checkpoint时会占用大量内存。根据我所了解的情况,已经有一篇JIRA描述了这个问题: https://issues.apache.org/jira/browse/FLINK-7289 。尽管我尝试过修改RocksDB的配置,但是我的容器仍然由于OOM被杀死。以下是监控页面截图:容器会被杀掉、重启,并再次被杀掉。
以下是我的配置信息:
public class BackendOptions implements OptionsFactory {
@Override
public DBOptions createDBOptions(DBOptions dbOptions) {
return dbOptions
.setIncreaseParallelism(4)
.setUseFsync(false)
.setMaxOpenFiles(-1);
}
@Override
public ColumnFamilyOptions createColumnOptions(ColumnFamilyOptions columnFamilyOptions) {
return columnFamilyOptions.setCompactionStyle(CompactionStyle.LEVEL)
.setLevelCompactionDynamicLevelBytes(true)
.setTargetFileSizeBase(256 * 1024 * 1024)
.setWriteBufferSize(64 * 1024 * 1024)
.setMaxBytesForLevelBase(1024 * 1024 * 1024)
.setMinWriteBufferNumberToMerge(2)
.setMaxWriteBufferNumber(5)
.setOptimizeFiltersForHits(true)
.setTableFormatConfig(
new BlockBasedTableConfig()
.setBlockCacheSize(256 * 1024 * 1024) // 256 MB
.setBlockSize(128 * 1024) //// 128 KB
.setCacheIndexAndFilterBlocks(true)
);
}
我每1分钟进行一次检查点,状态大小约为5GB。有人可以帮助我或告诉我正确使用增量检查点的方法吗?