【发布时间】:2021-01-27 06:29:36
【问题描述】:
我们正在尝试使用 RocksDB 后端设置 Flink 有状态作业。 我们正在使用会话窗口,间隔 30 分钟。我们使用 aggregateFunction,所以不使用任何 Flink 状态变量。 通过采样,我们每秒有不到 20k 个事件,每秒有 20 - 30 个新会话。我们的会议基本上收集了所有的事件。会话累加器的大小会随着时间的推移而增加。 我们在 Flink 1.9、128 个容器中总共使用了 10G 内存。 以下是设置:
state.backend: rocksdb
state.checkpoints.dir: hdfs://nameservice0/myjob/path
state.backend.rocksdb.memory.managed: true
state.backend.incremental: true
state.backend.rocksdb.memory.write-buffer-ratio: 0.4
state.backend.rocksdb.memory.high-prio-pool-ratio: 0.1
containerized.heap-cutoff-ratio: 0.45
taskmanager.network.memory.fraction: 0.5
taskmanager.network.memory.min: 512mb
taskmanager.network.memory.max: 2560mb
根据我们对给定时间的监控, RocksDB memtable 大小小于 10m, 我们的堆使用量小于 1G,但我们的直接内存使用量(网络缓冲区)使用的是 2.5G。缓冲池/缓冲区使用指标都为 1(已满)。 我们的检查站不断失败, 不知道网络缓存部分会占用这么多内存是正常的吗?
【问题讨论】:
标签: apache-flink flink-streaming