kafka调优参数

broker 参数

log.dirs:指定Broker使用的若干个文件目录路径,多个用,分割。最好是挂载不同的物理磁盘,可以提升读写性能和故障转移
listeners:学名叫监听器,其实就是告诉外部连接者要通过什么协议访问指定主机名和端口开放的 Kafka 服务。如:CONTROLLER: //localhost:9092
listener.security.protocol.map:一旦自定义了协议名称,还需要指定该参数。如:CONTROLLER:PLAINTEXT 表示使用明文不加密传输
auto.create.topics.enable:不允许程序自动穿件topic。最好设置false
unclean.leader.election.enable:关闭 Unclean Leader 选举,在副本大多数挂了的情况下,是否允许数据落后多的副本竞选。false 不允许,但是这样就会导致该分区不可用。true表示允许,会导致数据丢失。默认false,建议显示设置 false。
auto.leader.rebalance.enable:true表示允许kafka定期对一些topic分区进行leader重选举,是满足一定条件才发生。但是换leader 的代价很高,建议设置false。
log.retention.{hour|minutes|ms}:控制消息数据被保存多长时间
log.retention.bytes:指定 Broker 为消息保存的总磁盘容量大小。这个是删除旧日志,以便新增新日志。配合下个配置可以新增日志
log.segment.bytes:指定了每个日志段的最大字节数。当一个日志段的大小达到这个限制时,Kafka 会开始写入新的日志段,而旧的日志段会被保留
message.max.bytes:控制 Broker 能够接收的最大消息大小。
replication.factor >= 3 :最好将消息多保存几份,毕竟目前防止消息丢失的主要机制就是冗余
compression.type:指定消息压缩方式。有个producer 表示按 producer的来,否则按broker的来。
min.insync.replicas > 1 :控制的是消息至少要被写入到多少个副本才算是“已提交”
确保 replication.factor > min.insync.replicas。如果两者相等,那么只要有一个副本挂机,整个分区就无法正常工作了。我们不仅要改善消息的持久性,防止数据丢失,还要在不降低可用性的基础上完成。推荐设置成 replication.factor = min.insync.replicas + 1。
replica.lag.time.max.ms:Follower 副本能够落后 Leader 副本的最长时间间隔,当前默认值是 10 秒。,只要一个 Follower 副本落后 Leader 副本的时间不连续超过 10 秒,那么 Kafka 就认为该 Follower 副本与 Leader 是同步的。超过10秒,会被踢出 ISR

topic参数

retention.ms:规定了该 Topic 消息被保存的时长。默认是 7 天。一旦设置了这个值,它会覆盖掉 Broker 端的全局参数值。
retention.bytes:规定了要为该 Topic 预留多大的磁盘空间。和全局参数作用相似,这个值通常在多租户的 Kafka 集群中会有用武之地。当前默认值是 -1,表示可以无限使用磁盘空间。

jvm参数

KAFKA_HEAP_OPTS:指定堆大小。
KAFKA_JVM_PERFORMANCE_OPTS:指定 GC 参数。
示例:
	$> 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 设置文件描述符数量

producer 调优

compression.type  指定消息压缩算法,如:GZIP、SNAPPY、LZ4、Zstandard。需要注意的是 broker 也有这个参数,多了个 

producer 表示使用producer的压缩方式,否则按broker的来。
retries :表示笑死发送失败后的重试次数。
connections.max.idle.ms:指定时间内没有请求流过,则关闭TCP连接,默认9分钟。
enable.idempotence:发送消息的幂等性。为 true 则kafka自动处理重复消息。但只能保证单分区单会话幂等性。不建议使用。
transactional.id:将transactional.id配置为一个唯一标识符时,Kafka生产者将能够参与事务,并且可以将多个发送操作组合成一个原子性的事务。这意味着要么所有消息都成功发送并被确认,要么所有消息都不会被发送。

consumer调优

acks = all 设置消息已提交定义
compression.type 消费端的解压缩算法。不过消息会带着压缩类型来,一般不用额外配置
isolation.level:用于配置消费者读取数据时的隔离级别的属性,可以控制消费者对主题中消息的可见性。read_uncommitted:这是默认值,允许消费者读取主题中的所有消息,包括尚未提交的事务消息。这意味着消费者可以看到事务尚未完成的消息。read_committed:当将isolation.level设置为此值时,消费者只能读取已提交的消息,即已经被事务成功提交的消息。这样可以确保消费者不会看到未提交的事务消息,从而提供更强的数据一致性。
enable.auto.commit:是否自动提交位移数,即消费消息的偏移量。默认 true 自动提交。
auto.commit.interval.ms 指定时间内自动提交一次位移数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值