instalado - ¿Cómo configuro las opciones de Java para Kafka?
panel de control java windows 10 (4)
He estado experimentando con Kafka y he visto en la documentación en el sitio principal que puedes configurar diferentes opciones para el tamaño de pila de jvm y el recolector de basura que usa:
http://kafka.apache.org/documentation.html#java
Lo que no dice, sin embargo, es cómo / dónde configurar estas opciones. La aplicación viene con un directorio / config que contiene una gran cantidad de archivos utilizados para fines de configuración, pero ninguno que sea para Java. También viene con un directorio / bin que contiene un montón de scripts para Kafka pero, nuevamente, nada indica realmente cómo configurar Java.
Entonces, mi pregunta es, ¿cómo configuro las opciones de Java que usa Kafka? ¿Se hace a través de un archivo o hay una forma diferente?
Mirando kafka-run-classh.sh - kafka usa las siguientes variables:
- $ KAFKA_HEAP_OPTS
- $ KAFKA_JVM_PERFORMANCE_OPTS
- $ KAFKA_GC_LOG_OPTS
- $ KAFKA_JMX_OPTS
- $ KAFKA_LOG4J_OPTS
Puedes ejecutarlo a través de:
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
export KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12346 -Dcom.sun.management.jmxremote.rmi.port=12346 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
bin/kafka-server-start.sh -daemon config/server.properties
Otra forma de hacerlo es modificando la información escrita en /bin/kafka-server-start.sh
:
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
o en /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"
Puede pasar los parámetros de Java desde la línea de comandos. P.ej
java -server -Xms3072m -Xmx3072m -XX:NewSize=256m -XX:MaxNewSize=256m -classpath <long list of jars> foo.class
Para una `configuración de servidor de producción, puede crear un archivo de propiedades o establecerlos en Código creando
Properties props = new Properties();
props.put("serializer.class", "kafka.serializer.StringEncoder");
Y luego suministrarlos a producerConfig
ProducerConfig config = new ProducerConfig(props);
No estoy de acuerdo con la respuesta aceptada. La modificación de un script en el directorio bin
es muy recomendable. Al actualizar Kafka a la siguiente versión, la extracción de los nuevos binarios anularía los cambios realizados en el script.
La forma preferida debería ser establecer la variable de entorno KAFKA_HEAP_OPTS
fuera del script.
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
Si la var se establece antes de iniciar Kafka a través del script, utilizará la var en lugar de los valores predeterminados definidos en /bin/kafka-server-start.sh