小内存运行kafka

按照kafka的官方文档(http://kafka.apache.org/documentation.html#quickstart)试了一下,解压程序包后运行 $bin/zookeeper-server-start.sh config/zookeeper.properties &   结果一上来就报错,无法分配内存。 从错误输出来看,这个zookeeper-server要求申请536870912字节(512MB)内存 =。=#。。 日了狗了我的亚马逊主机总共才1GB物理内存而且还没建swap分区,free看了一下大概就剩200MB左右的可用内存。检查这个命令的两个文件,发现在zookeeper-server-start.sh中有个定义export KAFKA_HEAP_OPTS=”-Xmx512M -Xms512M”。上来就要jvm去申请512MB的最小空间,把这个Xms改成16M后zookeeper就启动正常了。 然后做下一步启动kafka-esrver $bin/kafka-server-start.sh config/server.properties & 同样遇到这个问题,修改kafka-server-start.sh中的Xms配置(这个更狠,要了1GB的初始内存) 重新启动kafka-server,这回又显示如下错误:OutOfMemoryError 这回是jvm已经启动,在kafka的程序内部分配内存时候出错了。看来除了在启动jvm前就申请了大内存,在kafka程序内部又申请了大内存。 先去检查作为启动参数的server.properties文件,里面关于size的配置都不大,不至于OutOfMemory。 再检查kafka的源码,定位到KafkaServer.scala的589行附近。 […]