【问题标题】:rocksdb out of memoryRocksDB内存不足
【发布时间】:2019-11-01 22:02:29
【问题描述】:

我试图找出我的 kafka-streams 应用程序内存不足的原因。 我已经发现 rocksDB 正在消耗大量本机内存,我尝试使用以下配置来限制它:

# put index and filter blocks in blockCache to avoid letting them grow unbounded (https://github.com/facebook/rocksdb/wiki/Block-Cache#caching-index-and-filter-blocks)
cache_index_and_filter_blocks = true;

# avoid evicting L0 cache of filter and index blocks to reduce performance impact of putting them in the blockCache (https://github.com/facebook/rocksdb/wiki/Block-Cache#caching-index-and-filter-blocks)
pinL0FilterAndIndexBlocksInCache=true

# blockCacheSize should be 1/3 of total memory available (https://github.com/facebook/rocksdb/wiki/Setup-Options-and-Basic-Tuning#block-cache-size)
blockCacheSize=1350 * 1024 * 1024

# use larger blockSize to reduce index block size (https://github.com/facebook/rocksdb/wiki/RocksDB-Tuning-Guide#difference-of-spinning-disk)
blockSize=256 * 1024

但内存使用量似乎仍在无限增长,我的容器最终会被 OOMKilled。

我使用 jemalloc 来分析内存使用情况 (like described here) 和 结果清楚地表明rocksDB负责,但我不知道如何进一步限制rocksDB的内存使用。

我不知道这是否有帮助,但为了完整起见,这里是从正在运行的 RocksDB 实例收集的统计信息:

我很高兴有任何提示

【问题讨论】:

    标签: java apache-kafka-streams rocksdb


    【解决方案1】:

    您是否看到内存使用量快速增长或在较长时间内增长?

    我们已经发现并修复了一些会导致内存泄漏的 RocksDB 资源泄漏:

    有一些迹象表明可能还有其他人 (https://issues.apache.org/jira/browse/KAFKA-8367),无论是在我们对 RocksDB 的使用中还是在 RocksDB 本身中。

    哦,另一个想法是,如果您在处理器或交互式查询中使用状态存储中的迭代器,则必须关闭它们。

    除了寻找泄漏之外,恐怕我对诊断 RocksDB 的内存使用情况没有太多的洞察力。您也可以限制 Memtable 的大小,但我认为我们默认不会将其设置得很大。

    希望对你有帮助,

    -约翰

    【讨论】:

    • 感谢您的想法。就我而言,这根本不是内存泄漏。看我的回答
    • 哦!是的,这是对的。很高兴你知道了。
    【解决方案2】:

    我找到了造成这种情况的原因。

    我以为我的 kafka 流应用程序只有一个 rockDB 实例。 但是每个流分区只有一个实例。所以这个配置:

    blockCacheSize=1350 * 1024 * 1024
    

    并不一定意味着rocksDB内存限制为1350MB。如果应用程序具有例如分配给它的 8 个流分区也有 8 个块缓存,因此最多可以占用 1350 * 8 = ~11GB 的内存。

    【讨论】:

    • 我以为我在某处读到增加块缓存大小会减少索引数量,从而减少内存占用?请问您是否知道如何调整仅在写入的rocksDB?我需要良好的写入性能,但我根本不阅读。
    猜你喜欢
    • 2014-10-15
    • 1970-01-01
    • 2011-05-21
    • 2021-12-20
    • 2021-10-29
    • 1970-01-01
    • 2020-03-12
    • 2015-08-11
    • 2019-06-07
    相关资源
    最近更新 更多