kafka服务器无法启动-java.io.ioexception:Map失败

oyt4ldly  于 2021-06-07  发布在  Kafka
关注(0)|答案(5)|浏览(518)

我无法启动Kafka服务器,因为下面的错误。

java.io.IOException: Map failed
    at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:940)
    at kafka.log.AbstractIndex.<init>(AbstractIndex.scala:61)
    at kafka.log.TimeIndex.<init>(TimeIndex.scala:55)
    at kafka.log.LogSegment.<init>(LogSegment.scala:73)
    at kafka.log.Log.loadSegments(Log.scala:267)
    at kafka.log.Log.<init>(Log.scala:116)
    at kafka.log.LogManager$$anonfun$createLog$1.apply(LogManager.scala:365)
    at kafka.log.LogManager$$anonfun$createLog$1.apply(LogManager.scala:361)
    at scala.Option.getOrElse(Option.scala:121)
    at kafka.log.LogManager.createLog(LogManager.scala:361)
    at kafka.cluster.Partition$$anonfun$getOrCreateReplica$1.apply(Partition.scala:109)
    at kafka.cluster.Partition$$anonfun$getOrCreateReplica$1.apply(Partition.scala:106)
    at kafka.utils.Pool.getAndMaybePut(Pool.scala:70)
    at kafka.cluster.Partition.getOrCreateReplica(Partition.scala:105)
    at kafka.cluster.Partition$$anonfun$4$$anonfun$apply$3.apply(Partition.scala:166)
    at kafka.cluster.Partition$$anonfun$4$$anonfun$apply$3.apply(Partition.scala:166)
    at scala.collection.mutable.HashSet.foreach(HashSet.scala:78)
    at kafka.cluster.Partition$$anonfun$4.apply(Partition.scala:166)
    at kafka.cluster.Partition$$anonfun$4.apply(Partition.scala:160)
    at kafka.utils.CoreUtils$.inLock(CoreUtils.scala:213)
    at kafka.utils.CoreUtils$.inWriteLock(CoreUtils.scala:221)
    at kafka.cluster.Partition.makeLeader(Partition.scala:160)
    at kafka.server.ReplicaManager$$anonfun$makeLeaders$4.apply(ReplicaManager.scala:754)
    at kafka.server.ReplicaManager$$anonfun$makeLeaders$4.apply(ReplicaManager.scala:753)
    at scala.collection.mutable.HashMap$$anonfun$foreach$1.apply(HashMap.scala:99)
    at scala.collection.mutable.HashMap$$anonfun$foreach$1.apply(HashMap.scala:99)
    at scala.collection.mutable.HashTable$class.foreachEntry(HashTable.scala:230)
    at scala.collection.mutable.HashMap.foreachEntry(HashMap.scala:40)
    at scala.collection.mutable.HashMap.foreach(HashMap.scala:99)
    at kafka.server.ReplicaManager.makeLeaders(ReplicaManager.scala:753)
    at kafka.server.ReplicaManager.becomeLeaderOrFollower(ReplicaManager.scala:698)
    at kafka.server.KafkaApis.handleLeaderAndIsrRequest(KafkaApis.scala:148)
    at kafka.server.KafkaApis.handle(KafkaApis.scala:84)
    at kafka.server.KafkaRequestHandler.run(KafkaRequestHandler.scala:62)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.OutOfMemoryError: Map failed
    at sun.nio.ch.FileChannelImpl.map0(Native Method)
    at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:937)
    ... 34 more

尝试了以下选项。但是没有用。请帮忙
将操作系统从32位升级到64位。
将java堆大小增加到1GB。
已卸载并安装apache kafka

ssm49v7z

ssm49v7z1#

这对我很有帮助:更改kafka\u heap\u opts=“-xmx256m-xms256m”(原来是512m)
将此更改为:kafka server start script
谢谢!

lo8azlld

lo8azlld2#

当这不能解决问题时,您可以尝试增加vm.max\u map\u计数。默认值为65536(请使用 sysctl vm.max_map_count )
cat /proc/[kafka-pid]/maps | wc -l 你可以看到有多少Map被使用。
增加设置:

sysctl -w vm.max_map_count=262144
oxcyiej7

oxcyiej73#

将jvm升级到64位解决了这个问题

kqlmhetl

kqlmhetl4#

我在windows上也遇到了同样的问题,Kafka在这个过程中占用了一些内存。因此,我们需要增加堆以防止限制应用程序的性能。这可以通过java控制面板以图形方式实现。

在运行时参数内,您可以更改jvm分配的内存大小:
-分配512mb的xmx512m,
-分配1gb的xmx1024m,
-分配2gb的xmx2048m,
-分配3gb内存的xmx3072m,以此类推。

dfddblmv

dfddblmv5#

这对我很有帮助:改变: export KAFKA_HEAP_OPTS="-Xmx512M -Xms512M" (原为1g)
在kafka服务器启动脚本中

相关问题