JVM的推荐设置如下所示
-Xmx8g -Xms8g -XX:MetaspaceSize=96m -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSize=16M -XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80
我的问题是 - 如何为Kafka设置上述Java选项?
我确信我们可以设置
export KAFKA_HEAP_OPTS="-Xmx8G -Xms8G"
但不确定我们是否可以附加整行
"-Xmx8g -Xms8g -XX:MetaspaceSize=96m -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSize=16M -XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80"
到 KAFKA_HEAP_OPTS 变量
参考 - https://community.hortonworks.com/articles/80813/kafka-best-practices-1.html
答案 0 :(得分:2)
你可以查看kafka-run-class.sh
,在这里你可以看到kafka用来启动java进程的env变量:
$KAFKA_HEAP_OPTS
$KAFKA_JVM_PERFORMANCE_OPTS
$KAFKA_GC_LOG_OPTS
$KAFKA_JMX_OPTS
$KAFKA_LOG4J_OPTS
然后它运行java应用程序传递它们:
nohup $JAVA $KAFKA_HEAP_OPTS $KAFKA_JVM_PERFORMANCE_OPTS $KAFKA_GC_LOG_OPTS $KAFKA_JMX_OPTS $KAFKA_LOG4J_OPTS....
基本上env变量的内容只是按原样附加到命令中,只要jvm参数的顺序正确,放置设置就不重要了。
因此,您只需更改$KAFKA_HEAP_OPTS
,但要保持变量名称与其内容一致,我会将-Xmx8g -Xms8g
放在KAFKA_HEAP_OPTS
中,将剩余的优化保存到KAFKA_JVM_PERFORMANCE_OPTS
。< / p>
答案 1 :(得分:1)
正如您所提到的,-Xmx8G -Xms8G
应使用KAFKA_HEAP_OPTS
设置。
对于您列出的其他配置,您应该使用KAFKA_JVM_PERFORMANCE_OPTS
。
我不知道有清楚描述所有支持的环境变量的地方。最好的方法是检查kafka-run-class.sh
工具,因为所有工具都会调用它,包括kafka-server-start.sh
。
例如:
KAFKA_HEAP_OPTS
用于https://github.com/apache/kafka/blob/trunk/bin/kafka-run-class.sh#L232-L234
KAFKA_JVM_PERFORMANCE_OPTS
用于https://github.com/apache/kafka/blob/trunk/bin/kafka-run-class.sh#L236-L239