Kafka未能映射1073741824字节用于提交保留内存

时间:2016-01-23 17:48:41

标签: apache-kafka

我在aws t2实例(一个内存为1GB)上安装kafka。

(1)我下载了kafka_2.11-0.9.0.0 (2)我运行zookeeper bin / zookeeper-server-start.sh config / zookeeper.properties (3)我尝试运行bin / kafka-server-start.sh config / server.properties 我得到了

Java HotSpot(TM)64位服务器VM警告:INFO:os :: commit_memory(0x00000000c0000000,1073741824,0)失败; error ='无法分配内存'(errno = 12)

。#

。#没有足够的内存让Java Runtime Environment继续运行。

。#Native memory allocation(mmap)无法映射1073741824字节以提交保留内存。

。#包含更多信息的错误报告文件保存为:

。#/ home / machine_name / kafka_2.11-0.9.0.0 / hs_err_pid9161.log

我检查了server.properties配置文件和文档中的所有属性,这些属性可能会尝试做类似的事情,但是找不到任何东西。

有谁知道为什么kafka在开始时试图分配1 gb?

3 个答案:

答案 0 :(得分:12)

Kafka默认使用以下jvm内存参数,这意味着kafka将在启动时分配1GB并使用最大1GB的内存:

-Xmx1G -Xms1G

只需将KAFKA_HEAP_OPTS env变量设置为您想要使用的任何变量。您也可以编辑./bin/kafka-server-start.sh并替换值。

答案 1 :(得分:0)

此问题还可能与分配的最大内存映射区域数有关。它引发完全相同的错误。

要解决此问题,您可以运行以下命令:

sysctl -w vm.max_map_count=200000

您要相对于文件描述符限制进行设置。总之,对于代理上的每个日志段,您都需要两个地图区域-一个用于索引,一个用于时间索引。

有关参考,请参见Kafka OS部分:https://kafka.apache.org/documentation/#os

答案 2 :(得分:0)

如果您的内存堆较小,则尝试减小大小 -Xmx400M -Xms400M(适用于Zookeeper和kafka)