【问题标题】:Kafka failed to map 1073741824 bytes for committing reserved memoryKafka 未能映射 1073741824 字节以提交保留内存
【发布时间】:2016-04-30 05:39:37
【问题描述】:

我在一个 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 位服务器虚拟机警告:INFO: os::commit_memory(0x00000000c0000000, 1073741824, 0) 失败; error='无法分配内存' (errno=12)

.#

.# 内存不足,Java 运行时环境无法继续。

.# 本机内存分配 (mmap) 未能映射 1073741824 字节以提交保留内存。

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

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

我检查了 server.properties 配置文件和文档中的所有属性,以查找可能尝试执行此类操作但找不到任何内容的属性。

有谁知道为什么kafka在启动时尝试分配1 gb?

【问题讨论】:

    标签: apache-kafka


    【解决方案1】:

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

    -Xmx1G -Xms1G
    

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

    【讨论】:

    • 是的,这就是问题所在!谢谢!
    • 我已经设置了 KAFKA_HEAP_OPTS = -Xmx1G -Xms1G 但仍然显示此错误:ava HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c0000000, 1073741824, 0)失败的; error='Cannot allocate memory' (errno=12) # # 内存不足,Java 运行时环境无法继续。 # 本机内存分配 (mmap) 未能映射 1073741824 字节以提交保留内存。
    • 编辑 kafka-server-start.sh 文件有帮助!
    • 如何使用 docker-compose 设置 KAFKA_HEAP_OPTS? KAFKA_HEAD_OPTS: -Xmx512M -Xms512M 这是我在 docker-compose 中的内容,但出现与上述相同的错误
    【解决方案2】:

    如果您的内存堆较低,请尝试减小大小 -Xmx400M -Xms400M 适用于 zookeeper 和 kafka

    【讨论】:

      【解决方案3】:

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

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

      sysctl -w vm.max_map_count=200000
      

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

      有关参考,请参阅 Kafka 操作系统部分:https://kafka.apache.org/documentation/#os

      【讨论】:

        猜你喜欢
        • 2011-05-13
        • 2010-12-09
        • 1970-01-01
        • 2014-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多