docker - 如何限制 kafka-streams 中的rocksdb内存使用

标签 docker apache-kafka-streams rocksdb

我正在使用 kafka-streams,堆外内存使用量增长到机器的物理限制。然而,当在 docker 中运行 kafka-streams 时,内存使用量会超过容器的限制,因此容器会被 OOM 杀死。

我的假设是rocksdb正在分配堆外空间。 -Xmx 可用于限制堆使用,但我找不到与 rockdb 堆外使用类似的任何内容。

rocksdb 如何检测物理内存限制?有没有办法在容器中模拟此限制?

最佳答案

这是内存碎片的问题。

您可以通过设置环境变量 MALLOC_ARENA_MAX=2 来调整 glibc 内存分配器,或者将内存分配器从 glibc 更改为 jemalloc。

关于docker - 如何限制 kafka-streams 中的rocksdb内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55559038/

相关文章:

docker - Docker数据容器,boot2docker和本地文件系统

docker - Docker-Compose入口点/命令

database - 固定大小键的最快持久键/值数据库,仅插入/获取(无删除/更新)?

docker - 无法启动 Docker 服务并出现错误 "Failed to start docker.service: Unit not found."

apache-kafka - Kafka Streams 用例

apache-kafka - 为什么 Kafka Streams API 中没有异步/非阻塞支持?

java - JSON对象: How to map的Kafka流消费者

apache-kafka-streams - Kafka Streams 构建 StateStoreSupplier : API clarifications

java - 如何将rocksdb数据移动到新目录?

cassandra - Docker + Cassandra ulimit 错误