赞
踩
kafka服务端有很多参数配置,涉及使用,调优的各个方面,虽然这些参数大多数情况下不需要更改,但了解这些参数,在做kafka调优的时候很重要。
该参数指明broker要连接zookeeper集群的服务地址和端口号,没有默认值,且为必填参数。kafka默认连接到zookeeper的根路径下,可以通过chroot改变默认路径,使用chroot参数,可以使得一套zk部署多个kafka集群。
该参数指明broker监听客户端连接地址列表,即客户端要连接broker的入口地址。配置格式为:
protocoll://hostname1:port1,protocoll://hostname2:port2
其中protocoll代表协议类型,kafka当前支持的协议类型有PLAINTEXT,SSL,SASL,SASL_SSL等。
与此参数关联的advertised.listeners,作用和listeners类似,默认值为null。不advertised.listeners
主要用于IaaS(Infrastructure as a service)环境,比如公有云上的机器通常配备多块网卡,既包含私有网网卡,又包含共有网网卡,对于这种情况,可以设置advertised.listeners参数绑定公网ip供外部客户使用,而listeners来绑定私网IP地址供broker间通讯使用。
该参数用来指定kafka集群中broker的唯一标识,默认值为-1.如果没有设置,那么kafka会自动生成一个。这个参数还和meta.properties文件及服务端参数broker.id.generation.enable和reserved.broker.max.id有关。
kafka把所有的消息都保存在磁盘上,而这两个参数用来配置kafka日志文件存放的根目录。一般情况下,log.dir用来配置单个根目录,而log.dirs用来配置多个根目录(以逗号分隔),但是kafka并没有对此做强制性限制,也就是说,log.dir和log.dirs都可以用来配置单个目录或者多个目录。log.dirs的优先级比log.dir的高。默认情况下只配置了log.dir参数,其默认值为/tmp/kafka-logs
该参数用来指定broker所能接收消息的最大值,默认值为1000012(B),约等于976.7KB。如果producer发送的消息大于这个参数所设置的值,就会报出RecordTooLargeException的异常。如果需要修改这个参数,还需要考虑max.request.size(客户端参数),max.message.bytes(topic端参数)的影响。
- ## 基础配置
- ## broker id列表,多个以","分隔
- brokerids=0,1,2
- ## broker监听的csv列表,格式是[协议]://[主机名]:[端口],[协议]://[主机名]:[端口]。该参数用于客户端连接broker使用。
- listeners=PLAINTEXT://{PODIP}:9092
- ## zookeeper的连接串,必须指定,多个以','分隔,如果使用一套zookeeper管理多个kafka集群,则zookeeper的chroot必须指定。
- zookeeper.connect=zookeeper-kutp-test2:12181
- ## 是否允许在服务器上自动创建topic
- auto.create.topics.enable=true
- ## 是否允许删除topic。如果关闭此配置,通过管理工具删除topic将不再生效
- delete.topic.enable=true
- ## 是否允许leader平衡。后台线程会定期检查并触发leader平衡。
- auto.leader.rebalance.enable=false
- ## 每个topic的默认分区大小
- num.partitions=3
- ## 每个topic的默认副本数
- default.replication.factor=2
- ## 系统topic的副本数
- offsets.topic.replication.factor=2
- ## 副本同步线程数
- num.replica.fetchers=2
- min.insync.replicas=1
- ## 数据保留配置
- ## 数据保存目录
- log.dir=/var/lib/kafka
- ## 数据保留大小阈值,单位:b
- log.retention.bytes=10737418240
- ## 数据保留时间阈值,单位:h
- log.retention.hours=168
- ## 每个segment的大小
- log.segment.bytes=1073741824
- ## 根据资源修改配置
- ## 该参数控制broker实际处理网络请求的线程数
- num.io.threads=8
- ## 用于处理各种后台任务的线程数量
- background.threads=8
- ## 控制broker在后台处理来自网络请求的线程数,该参数只是转发请求(转发给其他线程处理),并不会对其进行处理
- num.network.threads=4
- ## 每个topic最大消息大小
- message.max.bytes=10485760
- ## socket请求的最大大小
- socket.request.max.bytes=104857600
- ## 其他配置
- ## 是否允许服务器自动生成broker.id。
- broker.id.generation.enable=true
- ## 可以用于broker.id的最大数量
- reserved.broker.max.id=1000
- ## 压缩方式。 uncompressed, snappy, lz4, gzip, producer
- compression.type=producer
- ## 每个IP允许的最大连接数
- max.connections.per.ip=10000
- ## 系统topic的partation大小
- offsets.topic.num.partitions=50
- offsets.retention.minutes=20160
- ## zookeeper session超时时间
- zookeeper.connection.timeout.ms=240000
- ## consumer注册允许的最大会话超时时间
- group.max.session.timeout.ms=300000
- ## consumer注册允许的最小会话超时时间
- group.min.session.timeout.ms=6000
- ## 是否启用不在ISR集合中的副本作为leader
- unclean.leader.election.enable=false
- transaction.state.log.replication.factor=3
- transaction.state.log.min.isr=2
- ## 数据恢复线程数
- num.recovery.threads.per.data.dir=4
《深入理解Kafka核心设计与实践理论》
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。