I've been experimenting with Kafka and saw from the documentation on the main site that you're able to set different options for the jvm like heap size and the garbage collector that it uses:
http://kafka.apache.org/documentation.html#java
What it doesn't say, however, is how/where to set these options. The application comes with a /config directory containing a lot of files used for configuration purposes but none that are for Java. It also comes with a /bin directory containing a bunch of scripts for Kafka but again, nothing really indicating how to configure Java.
So my question is, how do I configure the Java options that Kafka uses? Is it done through a file or is there a different way?
Kafka uses heap space very carefully and does not require setting heap sizes more than 5GB. Kafka uses page cache memory as a buffer for active writers and readers, so after you specify JVM size (using -Xmx and -Xms Java options), leave the remaining RAM available to the operating system for page caching.
Modifying a script in the bin
directory is highly unrecommended. When upgrading Kafka to the next version, extracting the new binaries would override the changes made in the script.
The preferred way should be to set the environment variable KAFKA_HEAP_OPTS
outside the script.
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
If the var is set before starting Kafka via the script it will use the var instead of the default values defined in /bin/kafka-server-start.sh
Another way to do this is by modifying information written in /bin/kafka-server-start.sh
:
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
or in /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"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With