有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何为卡夫卡设置Java选项?

我一直在试用Kafka,从主站点上的文档中可以看到,您可以为jvm设置不同的选项,比如堆大小和它使用的垃圾收集器:

http://kafka.apache.org/documentation.html#java

但是,它没有说明如何/在哪里设置这些选项。该应用程序附带了一个/config目录,其中包含许多用于配置的文件,但没有一个用于Java。它还附带了一个/bin目录,其中包含一系列Kafka脚本,但同样,没有真正指明如何配置Java

所以我的问题是,如何配置卡夫卡使用的Java选项?它是通过文件完成的,还是有不同的方式


共 (3) 个答案

  1. # 1 楼答案

    另一种方法是修改/bin/kafka-server-start.sh中写入的信息:

    export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
    

    或者在/bin/kafka-run-class.sh中:

    KAFKA_JVM_PERFORMANCE_OPTS="-server -XX:+UseCompressedOops -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:+DisableExplicitGC -Djava.awt.headless=true"
    
  2. # 2 楼答案

    修改bin目录中的脚本是非常不可取的。将卡夫卡升级到下一个版本时,提取新的二进制文件将覆盖脚本中所做的更改

    首选的方法应该是在脚本之外设置环境变量KAFKA_HEAP_OPTS

    export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"

    如果在通过脚本启动卡夫卡之前设置了var,它将使用var,而不是/bin/kafka-server-start.sh中定义的默认值

  3. # 3 楼答案

    要添加通用JVM设置(例如用户时区),可以使用来自kafka-run-class.shKAFKA_OPTS环境变量:

    # Generic jvm settings you want to add
    if [ -z "$KAFKA_OPTS" ]; then
      KAFKA_OPTS=""
    fi