一、调优吞吐量
broker参数
- 增加num.replica.fetchers,不要超过CPU核数
- 调优gc,避免fullgc
producer参数
- 增加batch.size.100~512kb
- 增加linger.ms,比如1-~100毫秒
- 设置compression.type = lz4
- zcks= 0或1
- retry = 0
- 若分区数很多,增加buffer.memory
consumer参数
- 提高consumer实例
- 增加fetch.min.byte,比如100000
二、调优延时
broker参数
- 增加num.replica.fetchers
- 避免创建过多分区
producer参数
- linger.ms = 0
- compression.type=none
- acks=1或0
consumer参数
- fetch.min.byte=1
三、调优持久性(kafka消息不容易丢失的程度 可靠性?)
- unclean.leader.election.enable=false
- auto.create.topics.enable=false
- replication.factor.=3,min.insync.replicas = replication.factor-1
- default.replication.factor=3
- broker.rack属性分散分区数据到不同机架
- log.flush.interval.message 和 log.flush.interval.ms 为一个较小的值
producer参数
- ack=all
- 设置retries较大 10~30
- max.in.flight.request.per.connection=1
- enable.idempotence=true
consumer参数
- auto.commit.enable=false
- 消费成功后,commitSync提交位移
三、调优可用性
broker参数
- 避免创建过多分区
- unclean.leader.election.enable=true
- min.insync.replicas=1
num.recovery.trheads.per.data.dir=broker端log.dir设置的目录数
producer参数
acks=1
consumer参数
- session.timeout.ms为较低的值 10000
- max.poll.interval.ms为比平均处理时间稍大的值
- max.poll.records和max.partion.fatch.bytes 减少consumer处理消息的总时长,避免rebalance
调优其实是一个trade-off问题
网友评论