0

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

一组说要编辑kafka-server-startbash 文件

另一组说要设置一个系统变量,让kafka启动来接它

在来自 Confluent 的最新说明中,出现了以下“建议”:

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

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

4

1 回答 1

2

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

看起来这就是您正在寻找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

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

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

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

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

于 2016-09-20T18:00:22.987 回答