Kafka 最佳实践 + 如何设置 JVM 的推荐设置

eno*_*ado 7 java jvm apache-kafka

JVM 的推荐设置如下所示

-Xmx8g -Xms8g -XX:MetaspaceSize=96m -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSize=16M -XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 如何为 Kafka 设置上述 Java 选项?

我确信我们可以设置

export KAFKA_HEAP_OPTS="-Xmx8G -Xms8G"
Run Code Online (Sandbox Code Playgroud)

但不确定我们是否可以附加整行

"-Xmx8g -Xms8g -XX:MetaspaceSize=96m -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSize=16M -XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80"
Run Code Online (Sandbox Code Playgroud)

KAFKA_HEAP_OPTS变量

参考 - https://community.hortonworks.com/articles/80813/kafka-best-practices-1.html

Pai*_*izo 6

你可以检查一下kafka-run-class.sh,在这里你可以看到kafka使用哪些环境变量来启动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....

基本上,环境变量的内容只是按原样附加到命令中,只要 jvm 参数的顺序正确,将设置放在哪里并不重要。

因此,您可以简单地进行更改,$KAFKA_HEAP_OPTS以使变量名称与我要放入的内容保持一致-Xmx8g -Xms8gKAFKA_HEAP_OPTS并将剩余的优化放在KAFKA_JVM_PERFORMANCE_OPTS.