访问Kafka流的KTable底层RocksDB内存使用情况

Accessing Kafka stream's KTable underlying RocksDB memory usage

我有一个 kafka 流应用程序,目前需要 3 个主题并将它们聚合到一个 KTable 中。此应用驻留在 marathon 上的一个 scala 微服务中,该微服务已分配 512 MB 内存以供使用。实施此操作后,我注意到 docker 容器 运行 微服务最终会耗尽内存并试图调试原因。

我目前的理论(在阅读规模指南 https://docs.confluent.io/current/streams/sizing.html 时)是,随着时间的推移,存储在 KTable 中的记录不断增加,进而导致底层 RocksDB 导致微服务出现 OOM。有没有办法找出底层默认 RocksDB 实现使用的内存?

如果有人遇到类似问题,设置环境变量 MALLOC_ARENA_MAX=2 似乎已经为我解决了。有关原因的更详细解释,请参阅此处的 "Why memory allocators make a difference?" 和 "Tuning glibc" 部分:https://github.com/prestodb/presto/issues/8993.