java - kafka-设置java启动参数的正确方法

标签 java apache-kafka confluent-platform

在为 Kafka 进程设置各种堆、GC 等 Java 参数时,似乎存在相互冲突的思想流派。

一个小组说要编辑 kafka-server-start bash 文件

另一个小组说设置一个系统变量并让 kafka 启动程序拾取它

在 Confluence 的最新说明中出现以下“建议”:

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

关于在哪里设置这些的官方 Confluence 派对路线是什么? (我假设默认情况下不使用这些来适应较小的测试机器)

最佳答案

这两件事本质上都是告诉您做同样的事情,即手动覆盖 KAFKA_HEAP_OPTS 的值。

看起来像this is what you are looking for来自kafka-server-start.sh

if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
fi

EXTRA_ARGS=${EXTRA_ARGS-'-name kafkaServer -loggc'}

如果您从命令行启动它,您可以调用

export KAFKA_HEAP_OPTS="-Xmx2g -Xms2g"
./kafka-server-start.sh

或者,如果您首先编辑启动脚本,则不需要导出,因为该变量是在本地使用的。

KAFKA_HEAP_OPTS="-Xmx2g -Xms2g"
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
fi

第一个的好处是,它不需要更改 kafka-source,并且允许仅通过 shell 变量配置环境;

第二个很方便,因为您不需要记住在启动服务器之前设置环境变量。

关于java - kafka-设置java启动参数的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39600665/

相关文章:

apache-kafka - 当 Kafka 代理在消费者组协调方面失败时会发生什么?

apache-kafka - Confluence Cloud 上的 Apache Kafka - 分区主题和消费者滞后中的不连贯偏移

apache-kafka - 带有 kafka-avro-console-consumer 的未知魔法字节

apache-kafka - Kafka Connect 启动失败

java - 如何使用 Spock 在 Spring Boot 过滤器中模拟服务或 stub 服务方法?

java - 修复打开文件过多异常(我正在使用 try-catch-finally)

java - 为什么在解析 XML 时得到空节点值

java - MongoDB 的 JMX 注册错误

Spring Kafka Producer 不发送到 Kafka 1.0.0(Magic v1 不支持记录头)

apache-kafka - 卡夫卡的背压