代码之家  ›  专栏  ›  技术社区  ›  enodmilvado

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

  •  1
  • enodmilvado  · 技术社区  · 7 年前

    为JVM推荐的设置如下

    -Xmx8g -Xms8g -XX:MetaspaceSize=96m -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSize=16M -XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80
    

    我的问题是,我如何为卡夫卡设置上面的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"
    

    卡夫卡堆 变量

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

    2 回复  |  直到 7 年前
        1
  •  2
  •   Paizo    7 年前

    你可以查一下 kafka-run-class.sh 在这里,您可以看到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_堆 但是,为了使变量名与它们的内容保持一致,我将 -Xmx8g -Xms8g 在里面 KAFKA_HEAP_OPTS 剩下的优化到 KAFKA_JVM_PERFORMANCE_OPTS .

        2
  •  1
  •   Mickael Maison    7 年前

    正如你提到的, -Xmx8G -Xms8G 应使用设置 KAFKA_HEAP_OPTS .

    对于您列出的其他配置,您可能应该使用 KAFKA_JVM_PERFORMANCE_OPTS .

    我不知道在哪里可以清楚地描述所有支持的环境变量。最好是检查 kafka-run-class.sh 工具,所有工具都称之为工具,包括 kafka-server-start.sh .

    例如:

    推荐文章