本节主要是命令行参数层面的
Topic 级别参数
Topic 级别参数会覆盖全局 Broker 参数的值,而每个 Topic 都能设置自己的参数值
# 规定了该 Topic 消息被保存的时长。默认是 7 天,即该 Topic 只保存最近 7 天的消息。一旦设置了这个值,它会覆盖掉 Broker 端的全局参数值
retention.ms
# 规定了要为该 Topic 预留多大的磁盘空间。和全局参数作用相似,这个值通常在多租户的 Kafka 集群中会有用武之地。当前默认值是 -1,表示可以无限使用磁盘空间
retention.bytes
# 能处理的消息大小,必须设置,但需要根据业务来定
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
<a name="a8CI1"></a>
###
<a name="vQJG7"></a>
### JVM 参数
- 无脑给出一个通用的建议:将你的 JVM 堆大小设置成 6GB 吧,这是目前业界比较公认的一个合理值。
- GC 设置:使用 G1
**如何设置?**<br />在启动 brocker 前显示指定。<br />(感觉不对吧,肯定有在配置文件中添加的方法)
```bash
$> export KAFKA_HEAP_OPTS=--Xms6g --Xmx6g
$> export KAFKA_JVM_PERFORMANCE_OPTS= -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -Djava.awt.headless=true
$> bin/kafka-server-start.sh config/server.properties
操作系统参数
(暂时感觉影响不大)
- 文件描述符限制
# 修改为一个超大的值
ulimit -n 1000000