Java 使用rocksdb的Flink增量检查点会占用大量内存

Java 使用rocksdb的Flink增量检查点会占用大量内存,java,scala,apache-flink,Java,Scala,Apache Flink,现在,我在Flink和RocksDB中使用增量检查点,在容器环境中运行。据我所知,rocksdb在执行增量检查点时会占用大量内存,已经有一个JIRA描述了这个问题: 我试图调整Rocksdb的配置,但我的容器仍然因为OOM而被杀死。下面是监视器页面:我的容器将被终止并重新启动,然后再次终止 以下是我的配置: public class BackendOptions implements OptionsFactory { @Override public DBOptions createDBOp

现在,我在Flink和RocksDB中使用增量检查点,在容器环境中运行。据我所知,rocksdb在执行增量检查点时会占用大量内存,已经有一个JIRA描述了这个问题: 我试图调整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。
有人能帮助我或告诉我一些使用增量检查点的正确方法吗?

这似乎在Flink的较新版本(1.10及以上)中得到了修复。问题发生在2019年,每到2020年2月,相关问题就结束了


详情可在此处找到

您好,您有什么解决方案吗