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
最佳答案
你可以查看kafka-run-class.sh
,在这里你可以看到kafka使用了哪些env变量来启动java进程:
$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
的剩余优化。
关于java - Kafka 最佳实践 + 如何为 JVM 设置推荐设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50524643/