如何为Kafka设置Java选项?

Lui*_*ina 35 java apache-kafka

我一直在尝试使用Kafka,并从主站点上的文档中看到,您可以为jvm设置不同的选项,如堆大小和它使用的垃圾收集器:

http://kafka.apache.org/documentation.html#java

然而,它没有说的是如何/在何处设置这些选项.该应用程序附带一个/ config目录,其中包含许多用于配置目的但没有用于Java的文件.它还带有一个/ bin目录,其中包含一堆用于Kafka的脚本,但同样没有真正说明如何配置Java.

所以我的问题是,如何配置Kafka使用的Java选项?它是通过文件完成还是有不同的方式?

ben*_*.la 59

我不同意接受的答案.修改bin目录中的脚本是非常不推荐的.将Kafka升级到下一版本时,提取新二进制文件将覆盖脚本中所做的更改.

首选方法是KAFKA_HEAP_OPTS在脚本外部设置环境变量.

export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"

如果在通过脚本启动Kafka之前设置了var,它将使用var而不是在中定义的默认值 /bin/kafka-server-start.sh

  • 我有点失明.在深入挖掘之后,您会发现`connect-distributed`使用`kafka-run-class`,它使用完全相同的`KAFKA_HEAP_OPTS` var.将此留给像我这样的其他盲人. (2认同)

Sal*_*ali 13

另一种方法是修改以下信息/bin/kafka-server-start.sh:

export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
Run Code Online (Sandbox Code Playgroud)

或者在/bin/kafka-run-class.sh:

KAFKA_JVM_PERFORMANCE_OPTS="-server -XX:+UseCompressedOops -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:+DisableExplicitGC -Djava.awt.headless=true"
Run Code Online (Sandbox Code Playgroud)


小智 5

查看kafka-run-classh.sh - kafka使用以下变量:

  • $ KAFKA_HEAP_OPTS
  • $ KAFKA_JVM_PERFORMANCE_OPTS
  • $ KAFKA_GC_LOG_OPTS
  • $ KAFKA_JMX_OPTS
  • $ KAFKA_LOG4J_OPTS

您可以通过以下方式运行:

export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G" 
export KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12346 -Dcom.sun.management.jmxremote.rmi.port=12346 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false" 
bin/kafka-server-start.sh -daemon config/server.properties
Run Code Online (Sandbox Code Playgroud)


H.Ç*_*Ç.T 5

您还可以通过服务定义设置此参数,如下所示。

[Unit]
Requires=zookeeper.service
After=zookeeper.service

[Service]
Type=simple
User=kafka
ExecStart=/bin/sh -c '/home/kafka/kafka/bin/kafka-server-start.sh /home/kafka/kafka/config/server.properties > /home/kafka/kafka.log 2>&1'
ExecStop=/home/kafka/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal
Environment="KAFKA_HEAP_OPTS=-Xmx4G"
Environment="KAFKA_JMX_OPTS=-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.net.preferIPv4Stack=true"
Environment="JMX_PORT=9999"

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)