Kafka Best Practices +如何为JVM设置推荐设置

时间:2018-05-25 08:20:19

标签: 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

我的问题是 - 如何为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

2 个答案:

答案 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

例如: