私はKafkaを試してきましたが、メインサイトのドキュメントから、ヒープサイズや使用するガベージコレクターなど、jvmのさまざまなオプションを設定できることがわかりました。
http://kafka.Apache.org/documentation.html#Java
ただし、これらのオプションを設定する方法と場所はわかりません。このアプリケーションには、設定目的で使用される多くのファイルが含まれる/ configディレクトリが付属していますが、Java用のものはありません。また、Kafka=のためのスクリプトの束を含む/ binディレクトリが付属していますが、Javaの構成方法を実際に示すものは何もありません。
だから私の質問は、どのようにJava Kafkaが使用するオプションを設定しますか?ファイルを介して行われますか、それとも別の方法がありますか?
私は受け入れられた答えに同意しません。 bin
ディレクトリ内のスクリプトを変更することは、お勧めできません。 Kafka=を次のバージョンにアップグレードする場合、新しいバイナリを抽出すると、スクリプトで行われた変更が上書きされます。
推奨される方法は、スクリプトの外部で環境変数KAFKA_HEAP_OPTS
を設定することです。
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
スクリプトを介してKafka=を開始する前に変数が設定されている場合、/bin/kafka-server-start.sh
で定義されたデフォルト値の代わりに変数を使用します。
これを行う別の方法は、/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"
Kafka-run-classh.shを見る-kafkaは次の変数を使用します:
次の方法で実行できます。
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
コマンドラインからJavaパラメータを渡すことができます。
Java -server -Xms3072m -Xmx3072m -XX:NewSize=256m -XX:MaxNewSize=256m -classpath <long list of jars> foo.class
`実稼働サーバーの設定では、プロパティファイルを作成するか、コードでプロパティファイルを設定できます。
Properties props = new Properties();
props.put("serializer.class", "kafka.serializer.StringEncoder");
そして、それらをproducerConfigに提供します
ProducerConfig config = new ProducerConfig(props);