今天搭建了kafka單機版用於測試,配置好以後啓動kafka時出現了內存溢出的問題,如下:
[2016-10-22 10:39:39,112] INFO [Kafka Server 0], shut down completed (kafka.server.KafkaServer)
[2016-10-22 10:39:39,113] FATAL Fatal error during KafkaServerStartable startup. Prepare to shutdown (kafka.server.KafkaServerStartable)
java.lang.OutOfMemoryError: Java heap space
at java.nio.HeapByteBuffer.<init>(HeapByteBuffer.java:57)
at java.nio.ByteBuffer.allocate(ByteBuffer.java:335)
at kafka.log.SkimpyOffsetMap.<init>(OffsetMap.scala:42)
at kafka.log.LogCleaner$CleanerThread.<init>(LogCleaner.scala:177)
at kafka.log.LogCleaner$$anonfun$1.apply(LogCleaner.scala:86)
at kafka.log.LogCleaner$$anonfun$1.apply(LogCleaner.scala:86)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
at scala.collection.immutable.Range.foreach(Range.scala:141)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
at scala.collection.AbstractTraversable.map(Traversable.scala:105)
at kafka.log.LogCleaner.<init>(LogCleaner.scala:86)
at kafka.log.LogManager.<init>(LogManager.scala:64)
at kafka.server.KafkaServer.createLogManager(KafkaServer.scala:335)
at kafka.server.KafkaServer.startup(KafkaServer.scala:85)
at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:29)
at kafka.Kafka$.main(Kafka.scala:46)
at kafka.Kafka.main(Kafka.scala)
[2016-10-22 10:39:39,114] INFO EventThread shut down (org.apache.zookeeper.ClientCnxn)
[2016-10-22 10:39:39,116] INFO [Kafka Server 0], shutting down (kafka.server.KafkaServer)
解決方法:
編輯 kafka/kafka-server-start.sh 這個啓動文件,修改 KAFKA_HEAP_OPTS 這個參數,默認的參數是 export KAFKA_HEAP_OPTS="-Xmx512m -Xms512m",增大內存即可,export KAFKA_HEAP_OPTS="-Xmx1g -Xms1g",再次啓動問題解決。