java - Kafka 最佳实践 + 如何为 JVM 设置推荐设置

标签 java jvm apache-kafka

JVM 的推荐设置如下所示

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

我的问题是 - 如何为 Kafka 设置上述 Java 选项?

我确定我们可以设置

export KAFKA_HEAP_OPTS="-Xmx8G -Xms8G"

但不确定我们是否可以追加整行

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

KAFKA_HEAP_OPTS变量

引用 - https://community.hortonworks.com/articles/80813/kafka-best-practices-1.html

最佳答案

你可以查看kafka-run-class.sh,在这里你可以看到kafka使用了哪些env变量来启动java进程:

  • $KAFKA_HEAP_OPTS
  • $KAFKA_JVM_PERFORMANCE_OPTS
  • $KAFKA_GC_LOG_OPTS
  • $KAFKA_JMX_OPTS
  • $KAFKA_LOG4J_OPTS

然后它运行传递给它们的 java 应用程序:

nohup $JAVA $KAFKA_HEAP_OPTS $KAFKA_JVM_PERFORMANCE_OPTS $KAFKA_GC_LOG_OPTS $KAFKA_JMX_OPTS $KAFKA_LOG4J_OPTS....

基本上,env 变量的内容只是按原样附加到命令中,只要 jvm 参数的顺序正确,将设置放在哪里并不重要。

因此,您可以简单地更改 $KAFKA_HEAP_OPTS 但是为了使变量名称与其内容保持一致,我会将 -Xmx8g -Xms8g 放入 KAFKA_HEAP_OPTS > 以及对 KAFKA_JVM_PERFORMANCE_OPTS 的剩余优化。

关于java - Kafka 最佳实践 + 如何为 JVM 设置推荐设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50524643/

相关文章:

java - 使用 JPA 和 Spring Boot 查询实体类型(鉴别器)

java - 程序不会打开新窗口

java - 从命令行调用 OSGi 服务

java - 在静态 block 中初始化线程?

apache-kafka - 连接器中的任务何时变为未分配状态?

java - 通过 HTTPS 使用 HttpClient 信任所有证书

java - android系统是否包含JVM?

java - 如何在 64 位 Linux 上运行 32 位 JVM?

apache-kafka - Debezium Kafka 连接错误 - TimeoutException : Timeout expired while fetching topic metadata

kubernetes - 创建kafka容器时如何修复 “crashLoopBackoff”