赞
踩
调优策略参考自《Apache Kafka 实战》
吞吐量:broker 或应用程序每条能处理多少消息
延时:通常指 producer 端发送消息到 broker 端持久化保存消息之间的时间间隔。也用于统计端到端的延时,比如 producer 端发送一条消息到 consumer 端消费这条消息的时间间隔
目标 | 策略 |
---|---|
broker | 适当增加 num.replica.fetchers,但不要超过 cpu 核数 |
producer | 适当增加 batch.size |
适当增加 linger.ms | |
acks=0或1 | |
retries=0 | |
增加 buffer.memory | |
consumer | 采用多 consumer 实例 |
增加 fetch.min.bytes |
目标 | 策略 |
---|---|
borker | 适当增加 num.replica.fetchers |
避免创建过多 topic 分区 | |
producer | linger.ms=0 |
compression.type=none | |
acks=0或1 | |
consumer | fetch.min.bytes=1 |
目标 | 策略 |
---|---|
broker | unclean.leader.election.enable=false |
auto.create.topics.enable=false | |
replication.factor=3,min.insync.replicas=replication.factor-1 | |
default.replication.factor=3 | |
log.flush.interval.message和log.flush.interval.ms为一个较小的值 | |
producer | acks=all |
retries 为一个较大的值 | |
max.in.flight.requests.per.connection=1 | |
enable.idempotence=true启用幂等性 |
目标 | 策略 |
---|---|
broker | 避免创建过多分区 |
unclean.leader.election.enable=true | |
min.insync.replicas=1 | |
producer | acks=1 |
consumer | 设置 session.timeout.ms 为较低的值 |
设置 max.poll.records 和 max.partition.fetch.bytes 为较低的值,减少 consumer 处理消息的总时长,避免频繁 rebalance |
至少一次(At Least Once)= ack级别设置为-1+分区副本大于等于2+ISR里应答的最小副本数量大于等于2
如果不需要快速处理积压的消息,增加 consumer 即可
如果需要快速处理积压的消息,新建一个 topic, partition 高于当前 topic 的 partition,然后新建一个 consumer group 消费原 topic,消费逻辑就是把原消息发送到新 topic,原来的 consumer 去消费新 topic,这时候扩容 consumer 就能利用多机器提高消费速度从而消除消息积压
[1]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。