如何为kafka设置java选项?

wvmv3b1j  于 2021-06-08  发布在  Kafka
关注(0)|答案(6)|浏览(395)

我一直在试用kafka,从主站点上的文档中可以看到,您可以为jvm设置不同的选项,如堆大小和它使用的垃圾收集器:
http://kafka.apache.org/documentation.html#java
但是,它没有说明如何/在何处设置这些选项。应用程序附带了一个/config目录,其中包含许多用于配置的文件,但没有一个用于java。它还附带了一个/bin目录,其中包含一堆kafka的脚本,但同样没有真正指明如何配置java。
所以我的问题是,如何配置kafka使用的java选项?是通过文件完成的还是有不同的方法?

vmjh9lq9

vmjh9lq91#

您可以从命令行传递java参数。例如

java -server -Xms3072m -Xmx3072m -XX:NewSize=256m -XX:MaxNewSize=256m  -classpath <long list of jars> foo.class

对于“生产服务器配置”,您可以创建属性文件或通过创建

Properties props = new Properties();
 props.put("serializer.class", "kafka.serializer.StringEncoder");

然后提供给producerconfig

ProducerConfig config = new ProducerConfig(props);
wgmfuz8q

wgmfuz8q2#

在中修改脚本 bin 目录是非常不推荐的。将kafka升级到下一个版本时,提取新的二进制文件将覆盖脚本中所做的更改。
首选的方法应该是设置环境变量 KAFKA_HEAP_OPTS 在剧本之外。 export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G" 如果在通过脚本启动kafka之前设置了var,那么它将使用var,而不是中定义的默认值 /bin/kafka-server-start.sh

mfpqipee

mfpqipee3#

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

[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
83qze16e

83qze16e4#

要添加通用jvm设置(例如用户时区),可以使用 KAFKA_OPTS 环境变量来自 kafka-run-class.sh :


# Generic jvm settings you want to add

if [ -z "$KAFKA_OPTS" ]; then
  KAFKA_OPTS=""
fi
9cbw7uwe

9cbw7uwe5#

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

export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"

或在 /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"
zpf6vheq

zpf6vheq6#

查看kafka-run-classh.sh-kafka使用以下变量:
$kafka\u heap\u选项
$kafka\u jvm\u性能\u选项
$kafka\u gc\u log\u选项
$kafka\u jmx\u选项
$kafka\u log4j\u选项
您可以通过以下方式运行:

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

相关问题