kafka参数调优
1.broke
可以按如下配置 将自动生成 brokeid 自动识别 host.name
#broker.id=2
listeners=SASL_PLAINTEXT://:9092
zookeeper.connect=10.161.17.71:2181,10.161.17.72:2181,10.161.17.73:2181/kafka
2.连接 zookeeper 超时时间
zookeeper.connection.timeout.ms=60000
zookeeper.session.timeout.ms=60000
3.broker 优雅下线参数
controlled.shutdown.enable=true
开启的话,broker 在关闭时会向 controller 报告自己关闭,这样 controller 可以对 broker 的下线及时做一些操作,比如 partition 的重新选举、分区副本的关闭、通知其他的 broker 元数据变动等
4.关闭自动创建 topic 的选项
auto.create.topics.enable=false
5.线程参数
1.负责写磁盘的线程数
num.io.threads=13
整个参数值要占总核数的 50%,比如你的服务器的是 24 核,要给 13 核用于写磁盘
2.副本拉取线程数
num.replica.fetchers=4
这个参数占总核数的 50%的 1/3
3.数据传输线程数
num.network.threads=7
这个参数占总核数的 50%的 2/3
6.通讯参数
产线环境可以适当调大
socket.receive.buffer.bytes=1048576
socket.send.buffer.bytes=1048576
7.队列参数
queued.max.requests=10000
这个参数是指定用于缓存网络请求的队列的最大容量,这个队列达到上限之后
将不再接收新请求,产线环境适当调大
8.其他参数
auto.leader.rebalance.enable=true
leader.imbalance.per.broker.percentage=10
leader.imbalance.check.interval.seconds=3600
#副本拉取的最小大小 1mb
replica.fetch.min.bytes=1
#副本拉取的最大大小 20mb
replica.fetch.max.bytes=20971520
#多长时间拉取一次副本
replica.fetch.wait.max.ms=500
#超过多长时间副本退出 isr
replica.socket.timeout.ms=60000
#replica.fetch.wait.max.ms=1000
#缓存大小
replica.socket.receive.buffer.bytes=131072
#每当 producer 写入 10000 条消息时,刷数据到磁盘
log.flush.interval.messages=10000
#每间隔 1 秒钟时间,刷数据到磁盘
log.flush.interval.ms=1000