kafka java进程消耗太多内存

时间:2018-10-03 15:25:04

标签: java apache-kafka jvm

我有一个带有三个节点的kafka 0.11.xx服务器。 托管服务器的计算机是具有4GB RAM的Linux Ubuntu计算机。 我可以看到Java进程占用了大约90%的RAM。 我已将堆值设置为5GB。

消耗内存的过程是 jre / bin / java -Xmx5G -Xms5G

这是正常的情况,其中kafka预期将以4-5 GB的内存运行,还是不正常?

如果不是通常的情况,您能建议解决此问题,还是增加RAM是唯一的答案。

2 个答案:

答案 0 :(得分:1)

Kafka是designed to use the memory available to it,是确保其高性能的一部分。

Linux也将grab the memory it needs,这不一定是一件坏事。

仅当您的性能分析确定计算机在可用RAM上出现瓶颈时,我才担心内存使用情况。

答案 1 :(得分:1)

几件事:

  • 以某种方式,您将JVM堆参数设置为5GB。但是您的服务器只有4GB的物理RAM?您需要为操作系统,其他辅助应用程序/实用程序以及Kafka保留内存,否则会遇到问题。
  • Kafka本身依靠堆外内存(即JVM的外部内存)从那里服务使用者,因此,它不必一直从磁盘读取所有内容。但同样,您需要有可用的内存。

由于您指示集群上没有太多活动,因此我首先将设置Kafka服务(我假设是您发布的内容)的JVM参数设置为仅2GB,因此:-Xmx2G -Xms2G 。然后查看它如何影响您的应用程序/服务。然后,Kafka将有大约2GB +的RAM用于堆外处理。