本节主要是命令行参数层面的

Topic 级别参数

Topic 级别参数会覆盖全局 Broker 参数的值,而每个 Topic 都能设置自己的参数值

  1. # 规定了该 Topic 消息被保存的时长。默认是 7 天,即该 Topic 只保存最近 7 天的消息。一旦设置了这个值,它会覆盖掉 Broker 端的全局参数值
  2. retention.ms
  3. # 规定了要为该 Topic 预留多大的磁盘空间。和全局参数作用相似,这个值通常在多租户的 Kafka 集群中会有用武之地。当前默认值是 -1,表示可以无限使用磁盘空间
  4. retention.bytes
  5. # 能处理的消息大小,必须设置,但需要根据业务来定
  6. max.message.bytes

何时设置这些参数?

  • 创建 topic 时
  • 修改 topic 时 ```bash

    创建时设置

    bin/kafka-topics.sh —bootstrap-server localhost:9092 —create —topic transaction —partitions 1 —replication-factor 1 —config retention.ms=15552000000 —config max.message.bytes=5242880

修改时设置

bin/kafka-configs.sh —zookeeper localhost:2181 —entity-type topics —entity-name transaction —alter —add-config max.message.bytes=10485760

  1. <a name="a8CI1"></a>
  2. ###
  3. <a name="vQJG7"></a>
  4. ### JVM 参数
  5. - 无脑给出一个通用的建议:将你的 JVM 堆大小设置成 6GB 吧,这是目前业界比较公认的一个合理值。
  6. - GC 设置:使用 G1
  7. **如何设置?**<br />在启动 brocker 前显示指定。<br />(感觉不对吧,肯定有在配置文件中添加的方法)
  8. ```bash
  9. $> export KAFKA_HEAP_OPTS=--Xms6g --Xmx6g
  10. $> export KAFKA_JVM_PERFORMANCE_OPTS= -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -Djava.awt.headless=true
  11. $> bin/kafka-server-start.sh config/server.properties

操作系统参数

(暂时感觉影响不大)

  • 文件描述符限制
    1. # 修改为一个超大的值
    2. ulimit -n 1000000