如何计算kafka broker需要多少内存?

dz6r00yl  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(556)

在给定troughput、平均消息大小和保留时间的情况下,如何计算kafka代理需要多少内存。
我在问,正如我在我们的监控系统中看到的,在启动之后,kafka代理会线性增加使用的jvm堆。在某个时刻,我们摆脱了记忆错误。
我们扩展了jvm堆几次,问题仍然存在。
因此,最好不要猜测,Kafka需要什么实验,而是计算值:-)。

8dtrkrch

8dtrkrch1#

很难计算出精确的值,但您可以使用Kafka文档中的经验法则:
您需要足够的内存来缓冲活动的读写器。假设您希望能够缓冲30秒,并将您的内存需求计算为write_throughput*30,您就可以对内存需求进行一次封底估计。
同样从1.0.0开始,您可以使用 queued.max.request.bytes 限制代理可用于传入请求的内存量。这可以帮助您避免oom,并且如果您可以通过以下方式监视其使用情况:

kafka.network:type=SocketServer,name=MemoryPoolAvailable
kafka.network:type=SocketServer,name=MemoryPoolUsed

这将允许您确定工作负载需要多少内存,而不会出现太多问题。

相关问题