我正在使用 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/