如何计算Kafka Broker需要多少内存?

时间:2018-01-18 08:58:06

标签: java memory-management configuration apache-kafka out-of-memory

如何计算Kafka Broker在提供吞吐量,平均邮件大小和保留时间方面需要多少内存。

我问,正如我在监控系统中看到的那样,启动后,Kafka代理线性增加使用了JVM堆。 在某些时候,我们得到了OutOfMemoryError。

我们几次扩展JVM Heap,问题仍然存在。

所以最好不要猜测,卡夫卡通过实验需要什么,而是计算价值: - )。

1 个答案:

答案 0 :(得分:2)

计算精确值很难,但您可以使用Kafka documentation中的经验法则:

  

您需要足够的内存来缓冲活跃的读者和作者。假设您希望能够缓冲30秒并将内存需求计算为write_throughput * 30,则可以对内存需求进行背面估计。

同样从1.0.0开始,您可以使用queued.max.request.bytes来限制内存代理可以用于传入请求的数量。这可以帮助您避免OOM,如果您可以通过以下方式监控其使用情况:

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

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