kafka参数整理

首先感谢很多先辈们的总结,让我省去了很多思考的功夫,更快的整理出这些从0.10.0 kafka官网中查询到的参数,但是感觉官网列出的这些参数不是很全,后续发现新参数会逐步添加到这个里面。如果有同事发现错误的地方或者有个人见解的地方也请留言,我会感谢并进行整合修改。

Listeners

默认值:null

描述:例如PLAINTEXT://172.16.49.173:9093

 

advertised.host.name

默认值:null

描述:外网访问使用,和advertised.listeners,advertised.port配合使用,0.10开始,只配置advertised.listeners就可以

 

advertised.listeners

默认值:null

描述:是暴露给外部的listeners,如果没有设置,会用listeners

 

advertised.port

默认值:9092

描述:端口配置参数

 

auto.create.topics.enable

默认值:true

描述:若为true则如果producer写入某个不存在的topic时会自动创建该topic,若为false则需要事先创建否则会报错:failed after 3 retries

 

auto.leader.rebalance.enable

默认值:true

描述:允许自动主平衡。后台线程定时校验和触发主平衡

 

background.threads

默认值:10

描述:后台处理任务的线程数,用来处理各种不同的后台任务的线程数量,比如删除文件,一般不需要改变它。

 

compression.type

默认值:producer

描述:指定一个主题最后的压缩类型。这个配置项接收标准的压缩编码(gzip,snappy,lz4)。还可以配置为uncompressed,表示不压缩。也可以配置为producer,表示与生产者配置的压缩类型一致。

 

delete.topic.enable

默认值:false

描述:可以删除主题。如果设置为关闭,那么通过管理工具删除主题是无效的,如果不加这个参数其实并不执行删除动作,仅仅是在zookeeper上标记该topic要被删除而已,同时也提醒用户一定要提前打开delete.topic.enable开关,否则删除动作是不会执行的。

 

leader.imbalance.check.interval.seconds

默认值:300

描述 检测leader不平衡的时间间隔,partition进行balance操作,定时执行的调度函数为checkAndTriggerPartitionRebalance。

leader.imbalance.per.broker.percentage

默认值:10

描述:每个broker允许的不平衡的leader的百分比。如果每个broker超过了这个百分比,复制控制器会重新平衡leadership

log.flush.interval.messages

默认值:9223372036854775807

描述:log文件”sync”到磁盘之前累积的消息条数,因为磁盘IO操作是一个慢操作,但又是一个”数据可靠性"的必要手段,所以此参数的设置,需要在"数据可靠性"与"性能"之间做必要的权衡.如果此值过大,将会导致每次"fsync"的时间较长(IO阻塞),如果此值过小,将会导致"fsync"的次数较多,这也意味着整体的client请求有一定的延迟.物理server故障,将会导致没有fsync的消息丢失.

 

log.flush.interval.ms

默认值:null

描述:此项配置用来置顶强制进行fsync日志到磁盘的时间间隔(固化到硬盘);例如,如果设置为1000,那么每1000ms就需要进行一次fsync。一般不建议使用这个选项。

log.flush.offset.checkpoint.interval.ms

默认值:60000

描述:记录上次把log刷到磁盘的时间点的频率,用来日后的recovery。通常不需要改变

log.flush.scheduler.interval.ms

默认值:9223372036854775807

描述:log flusher检查是否需要把log刷到磁盘的时间间隔,单位为ms。

log.retention.bytes

默认值 -1

描述:如果使用“delete”的retention 策略,这项配置就是指在删除日志之前,日志所能达到的最大尺寸。默认情况下,没有尺寸限制而只有时间限制

 

 

log.retention.hours

默认值:168

描述:数据文件保留多长时间, 存储的最大时间超过这个时间会根据log.cleanup.policy设置数据清除策略,log.retention.bytes和log.retention.minutes或log.retention.hours,log.retention.ms

任意一个达到要求,都会执行删除 按照文件大小删除是log.retention.bytes其他两个是按小时删除

 

log.retention.minutes

默认值:null

描述:数据文件保留多长时间, 存储的最大时间超过这个时间会根据log.cleanup.policy设置数据清除策略,log.retention.bytes和log.retention.minutes或log.retention.hours,log.retention.ms

任意一个达到要求,都会执行删除 按照文件大小删除是log.retention.bytes其他两个是按时间删除。如果不配,使用log.retention.hours

 

log.retention.ms

默认值:null

描述:日志文件保留的毫秒数,如果不配,使用log.retention.minutes

 

log.roll.hours

默认值:168

描述:这个参数会在日志segment(日志的分块文件)没有达到log.segment.bytes设置的大小,也会强制新建一个segment。会被 topic创建时的指定参数覆盖。

 

log.roll.ms

默认值:null

描述:这个参数会在日志segment(日志的分块文件)没有达到log.segment.bytes设置的大小,也会强制新建一个segment。会被 topic创建时的指定参数覆盖。如果没有设置默认使用log.roll.hours

 

 

log.roll.jitter.hours

默认值:0

描述:指定日志切分段的毫秒数,从logRollTimeMillis减去的最大抖动(以小时为单位),如果不设置,默认使用log.roll.jitter.hours

 

log.roll.jitter.ms

默认值:null

描述:指定日志切分段的毫秒数,从logRollTimeMillis减去的最大抖动(以ms为单位),如果不设置,默认使用log.roll.jitter.hours

 

log.segment.bytes

默认值:1073741824

描述:topic 分区的日志存放在某个目录下诸多文件中,这些文件将partition的日志切分成一段一段的,这就是段文件(segment file);一个topic的一个分区对应的所有segment文件称为log。这个设置控制着一个segment文件的最大的大小,如果超过了此大小,就会生成一个新的segment文件。此配置可以被覆盖

 

log.segment.delete.delay.ms

默认值:60000

描述:log文件被移出索引后(删除),log文件的保留时间。在这段时间内运行的任意正在进行的读操作完成操作,不用去打断它。通常不需要改变。

 

message.max.bytes

默认值:1000012

描述:kafka允许的最大的一个批次的消息大小。 如果这个数字增加,并且有0.10.2版本以下的消费者,那么消费者的提取大小也必须增加,以便他们可以取得这么大的记录批次。在最新的消息格式版本中,记录总是被组合到一个批次以提高效率。 在以前的消息格式版本中,未压缩的记录不会分组到批次中,并且此限制仅适用于该情况下的单个记录。可以使用主题级别max.message.bytes来设置每个主题。

 

min.insync.replicas

默认值:1

描述:该属性规定了最小的ISR数,当生产者将ack设置为“全部”(或“-1”)时,min.insync.replicas指定必须确认写入被认为成功的最小副本数(必须确认每一个repica的写数据都是成功的)。 如果这个最小值不能满足,那么生产者将会引发一个异常(NotEnoughReplicas或NotEnoughReplicasAfterAppend)。当一起使用时,min.insync.replicas和acks允许您强制更大的耐久性保证。 一个典型的情况是创建一个复制因子为3的主题,将min.insync.replicas设置为2,并且生产者使用“all”选项。 这将确保如果大多数副本没有写入生产者则抛出异常。

 

num.io.threads

默认值:8

描述:执行磁盘IO的线程数,不要小于磁盘的数量

 

num.network.threads

默认值:3

描述:服务器用于接收来自网络的请求并向网络发送响应的线程数

 

num.recovery.threads.per.data.dir

默认值:1

描述:每个数据目录的线程数,用于启动时的日志恢复和关闭时的刷新,采用RAID的时候可以增大该值。

 

num.replica.fetchers

默认值:1

描述:用来从leader复制消息的线程数量,增大这个值可以增加follow的I/O并行度

 

offset.metadata.max.bytes

默认值:4096

描述:允许client(消费者)保存它们元数据(offset)的最大的数据量。

 

offsets.commit.required.acks

默认值:-1

描述:offset commit可以接受之前,需要设置acks的数目,一般不需要更改

 

offsets.commit.timeout.ms

默认值:5000

描述:offsets提交将被延迟,直到偏移量topic的所有副本都收到提交或达到此超时。 这与生产者请求超时类似。

 

 

offsets.load.buffer.size

默认值:5242880

描述:每次从offset段文件往缓存加载offsets数据时的读取的数据大小。

 

offsets.retention.check.interval.ms

默认值:600000

描述:检查失效offset的频率。

 

offsets.retention.minutes

默认值:1440

描述:如果一个group在这个时间没没有提交offsets,则会清理这个group的offset数据。

 

offsets.topic.compression.codec

默认值:0

描述:用于offsets主题的压缩编解码器 - 压缩可用于实现“原子”提交

 

offsets.topic.num.partitions

默认值:50

描述:Offsets topic的分区数量(部署后不应更改)

 

offsets.topic.replication.factor

默认值:3

描述:Offsets topic的复制因子(设置得更高以确保可用性)。 内部主题创建将失败,直到群集大小满足此复制因素要求。

 

offsets.topic.segment.bytes

默认值:104857600

描述:为了便于更快的日志压缩和缓存加载,偏移量的主题段字节应保持相对较小

 

queued.max.requests

默认值:5000

描述:I/O线程等待队列中的最大的请求数,超过这个数量,network线程就不会再接收一个新的请求。这个参数是指定用于缓存网络请求的队列的最大容量,这个队列达到上限之后将不再接收新请求。一般不会成为瓶颈点,除非I/O性能太差,这时需要配合num.io.threads等配置一同进行调整。

 

quota.consumer.default

默认值:9223372036854775807

描述:只有在动态默认配额没有配置或者为Zookeeper时才使用。 如果一个消费者每秒消费的数据量大于此值,则暂时不会再允许消费。0.9版本新加。

 

quota.producer.default

默认值:9223372036854775807

描述:只有在动态默认配额没有配置或者为Zookeeper时才使用。如果一个生产者每秒产生的数据大于此值,则暂时会推迟接受生产者数据。

 

replica.fetch.max.bytes

默认值:1048576

描述:复制数据过程中,replica收到的每个fetch响应,期望的最大的字节数,如果没有收到足够的字节数,就会等待期望更多的数据,直到达到replica.fetch.wait.max.ms。

 

replica.fetch.min.bytes

默认值:1

描述:复制数据过程中,replica收到的每个fetch响应,期望的最小的字节数,如果没有收到足够的字节数,就会等待期望更多的数据,直到达到replica.fetch.wait.max.ms。

 

replica.fetch.wait.max.ms

默认值:500

描述:Replicas follow同leader之间通信的最大等待时间,失败了会重试。 此值始终应始终小于replica.lag.time.max.ms,以防止针对低吞吐量主题频繁收缩ISR

 

replica.high.watermark.checkpoint.interval.ms

默认值:5000

描述:每一个replica follower存储自己的high watermark到磁盘的频率,用来日后的recovery。

 

replica.lag.time.max.ms

默认值:10000

描述:如果一个follower在这个时间内没有发送fetch请求,leader将从ISR重移除这个follower,并认为这个follower已经挂了。

 

replica.socket.receive.buffer.bytes

默认值:65536

描述:复制数据过程中,follower发送网络请求给leader的socket receiver buffer的大小。

 

replica.socket.timeout.ms

默认值:30000

描述:复制数据过程中,replica发送给leader的网络请求的socket超时时间。它的值应该至少是replica.fetch.wait.max.ms

 

request.timeout.ms

默认值:30000

描述:在向producer发送ack之前,broker允许等待的最大时间,如果超时,broker将会向producer发送一个error ACK.意味着上一次消息因为某种原因未能成功(比如follower未能同步成功) ,客户端将在必要时重新发送请求,或者如果重试耗尽,则请求失败。

 

socket.receive.buffer.bytes

默认值:102400

描述:server端用来处理socket连接的SO_RCVBUFF缓冲大小。如果值为-1,则将使用操作系统默认值。

 

socket.request.max.bytes

默认值:104857600

描述:server能接受的请求的最大的大小,这是为了防止server跑光内存,不能大于Java堆的大小。

 

socket.send.buffer.bytes

默认值:102400

描述:server端用来处理socket连接的SO_SNDBUFF缓冲大小。如果值为-1,则将使用操作系统默认值。

 

unclean.leader.election.enable

默认值:true

描述:指明了是否能够使不在ISR中replicas follower设置用来作为leader,这么做可能会导致数据丢失

 

zookeeper.connection.timeout.ms

默认值:null

描述:客户端等待连接到zk的最大时间。如果不设置,系统默认使用zookeeper.session.timeout.ms

 

zookeeper.session.timeout.ms

默认值:60000

描述:ZooKeeper的session的超时时间,如果在这段时间内没有收到ZK的心跳,则会被认为该Kafka server挂掉了。如果把这个值设置得过低可能被误认为挂掉,如果设置得过高,如果真的挂了,则需要很长时间才能被server得知。

 

zookeeper.set.acl

默认值:false

描述:连接zookeeper是否使用 ACLs安全验证

 

broker.id.generation.enable

默认值:true

描述:服务器是否允许自动生成broker.id;如果允许则产生的值会交由reserved.broker.max.id审核

 

broker.rack

默认值:null

描述:broker的机架位置。 这将在机架感知复制分配中用于容错。 例如:RACK1,主机名

 

connections.max.idle.ms

默认值:600000

描述:空闲连接超时服务器套接字处理器线程关闭闲置超过此的连接

 

controlled.shutdown.enable

默认值:ture

描述:是否允许控制器关闭broker ,若是设置为true,会关闭在这个broker上所有分区的leader,并转移到其他broker,这会降低在关闭期间不可用的时间。

 

controlled.shutdown.max.retries

默认值:3

描述 控制器在关闭时可能有多种原因导致失败,可以重新关闭的次数。

 

controlled.shutdown.retry.backoff.ms

默认值:5000

描述:在每次重新关闭前,系统需要一定的时间去恢复发生错误之前的状态,这个就是在重试期间的回退(backoff)时间。

 

controller.socket.timeout.ms

默认值:30000

描述:控制器到broker通道的socket超时时间

 

default.replication.factor

默认值:1

描述:自动创建topic时的默认副本的个数

 

fetch.purgatory.purge.interval.requests

默认值:100

描述:清除consumer历史获取request记录 

 

producer.purgatory.purge.interval.requests

默认值:1000

描述:清除producer历史生成request记录

 

group.max.session.timeout.ms

默认值:300000

描述:消费者向组内注册时允许的最大超时时间,超过这个时间表示注册失败。更长的超时使消费者有更多的时间来处理心跳之间的消息,代价是检测失败的时间更长。

 

group.min.session.timeout.ms

默认值:6000

描述:消费者向组内注册时允许的最小超时时间,更短的超时以更频繁的消费者心跳为代价但有更快速的故障检测,这可能影响broker资源。

 

inter.broker.protocol.version

默认值:0.10.0-IV1

描述:指定将使用哪个版本的 inter-broker 协议。 在所有经纪人升级到新版本之后,这通常会受到冲击。升级时要设置

 

log.cleaner.backoff.ms

默认值:15000

描述 :检查log是否需要clean的时间间隔

 

log.cleaner.dedupe.buffer.size

默认值:134217728

描述:日志压缩去重时候的缓存空间,在空间允许的情况下,越大越好。

 

log.cleaner.delete.retention.ms

默认值:86400000(24 hours)

描述:对于压缩的日志保留的最长时间,也是客户端消费消息的最长时间,同log.retention.minutes的区别在于一个控制未压缩数据,一个控制压缩后的数据。

 

log.cleaner.enable

默认值:true

描述 启用日志清理器进程在服务器上运行。使用了cleanup.policy = compact的主题,包括内部offsets主题,都应该启动该选项。如果被禁用的话,这些话题将不会被压缩,并且会不断增长。

 

log.cleaner.io.buffer.load.factor

默认值:0.9

描述:日志清理中hash表的扩大因子,日志清除器重复数据删除缓冲区负载因子。 重复数据删除缓冲区已满的百分比。 较高的值将允许同时清除更多的日志,但会导致更多的哈希冲突

 

log.cleaner.io.buffer.size

默认值:524288

描述:日志清理时候用到的I/O块(chunk)大小,用于清理所有清除程序线程的日志清除器I / O缓冲区的总内存。

 

log.cleaner.io.max.bytes.per.second

默认值:1.7976931348623157E308

描述:在执行log compaction的过程中,限制了cleaner每秒钟I/O的数据量,以免cleaner影响正在执行的请求。

 

log.cleaner.min.cleanable.ratio

默认值:0.5

描述:脏日志与日志的总日志的最小比率,以符合清理条件控制了log compactor进行clean操作的频率。默认情况下,当log的50%以上已被clean时,就不用继续clean了。此配置可以被覆盖。

 

log.cleaner.threads

默认值:1

描述:使用log compaction功能来清理log的线程的数量

log.cleanup.policy

默认值:delete

描述:此配置可以设置成delete或compact。 逗号分隔的有效策略列表。如果设置为delete,当log segment文件的大小达到上限,或者roll时间达到上限,文件将会被删除。如果设置成compact,则此文件会被清理,标记成已过时状态,此配置可以被覆盖。

 

log.index.interval.bytes

默认值:4096

描述 当执行一个fetch操作后,需要一定的空间来扫描最近的offset大小,设置越大,代表扫描速度越快,但是也更耗内存,一般情况下不需要改变这个参数。

 

log.index.size.max.bytes

默认值:10485760

描述:每个log segment的最大尺寸。注意,如果log尺寸达到这个数值,即使尺寸没有超过log.segment.bytes限制,也需要产生新的log segment。

 

log.message.format.version

默认值:0.10.0-IV1

描述:指定broker将用于将消息添加到日志文件的消息格式版本。 该值应该是有效的ApiVersion。 一些例子是:0.8.2,0.9.0.0,0.10.0。 通过设置特定的消息格式版本,用户保证磁盘上的所有现有消息都小于或等于指定的版本。 不正确地设置这个值将导致使用旧版本的用户出错,因为他们将接收到他们不理解的格式的消息。

 

log.message.timestamp.difference.max.ms

默认值:9223372036854775807

描述:broker收到消息时的时间戳和消息中指定的时间戳之间允许的最大差异。 如果log.message.timestamp.type = CreateTime,如果时间戳的差值超过此阈值,则会拒绝接受这条消息。 如果log.message.timestamp.type = LogAppendTime,则忽略此配置。允许的最大时间戳差异不应大于log.retention.ms,以避免不必要地频繁进行日志滚动。

 

log.message.timestamp.type

默认值:CreateTime

描述 定义消息中的时间戳是消息创建时间还是日志追加时间。 该值应该是“CreateTime”或“LogAppendTime”

 

log.preallocate

默认值:false

描述:是否预创建新的段文件,windows推荐使用

 

log.retention.check.interval.ms

默认值:300000

描述:检查日志段文件的间隔时间,以确定是否文件属性是否到达删除要求。

 

max.connections.per.ip

默认值:2147483647

描述:broker上每个IP允许最大的连接数

 

max.connections.per.ip.overrides

默认值:

描述:每个ip或者hostname默认的连接的最大覆盖

 

num.partitions

默认值:1

描述:新建Topic时默认的分区数

 

principal.builder.class

默认值:

class org.apache.kafka.common.security.auth.DefaultPrincipalBuilder

描述:实现Principal Builder接口的类的完全限定名,该接口当前用于构建与SSL安全协议的连接的Principal。

 

replica.fetch.backoff.ms

默认值:1000

描述:复制数据时失败等待时间

 

reserved.broker.max.id

默认值:1000

描述:可用于broker.id的最大数量。

 

sasl.enabled.mechanisms

默认值:[GSSAPI]

描述:Kafka服务器中启用的SASL机制列表。 该列表可以包含安全提供者可用的任何机制。 默认情况下仅启用GSSAPI。

 

sasl.kerberos.kinit.cmd

默认值:/usr/bin/kinit

描述:Kerberos kinit命令路径

 

sasl.kerberos.min.time.before.relogin

默认值:60000

描述:登录线程在刷新尝试之间的休眠时间。

 

sasl.kerberos.principal.to.local.rules

默认值:[DEFAULT]

描述:用于从主体名称到短名称(通常是操作系统用户名)的映射规则列表。 按顺序评估规则,并且使用与主体名称匹配的第一个规则将其映射到短名称。 将忽略列表中的任何后续规则。 默认情况下,{username} / {hostname} @ {REALM}形式的主体名称映射到{username}。 有关格式的详细信息,请参阅安全授权和acls。

 

sasl.kerberos.service.name

默认值:null

描述 Kafka运行的Kerberos主体名称。 这可以在Kafka的JAAS配置或Kafka的配置中定义。

 

sasl.kerberos.ticket.renew.jitter

默认值:0.05

描述:添加到更新时间的随机抖动的百分比。

 

sasl.kerberos.ticket.renew.window.factor

默认值:0.8

描述:登录线程将休眠,直到从上次刷新ticket到期,此时将尝试续订ticket

sasl.mechanism.inter.broker.protocol

默认值:GSSAPI

描述:SASL机制用于代理间通信。 默认为GSSAPI。

 

security.inter.broker.protocol

默认值:PLAINTEST

描述:用于在代理之间通信的安全协议。 有效值为:PLAINTEXT,SSL,SASL PLAINTEXT,SASL SSL。

 

ssl.cipher.suites

默认值:null

描述:密码套件列表。用于TLS或SSL网络协议协商网络连接的安全设置的认证,加密,MAC和密钥交换算法的命名组合。 默认情况下,支持所有可用的密码套件。

ssl.client.auth

默认值:none

描述:配置kafka代理以请求客户端认证。 以下设置很常见:ssl.client.auth =必需如果设置为必需,则需要客户端身份验证。 ssl.client.auth = requested这意味着客户端认证是可选的。 与请求不同,如果设置此选项,客户端可以选择不提供有关本身的身份验证信息ssl.client.auth = none这意味着不需要客户端身份验证。

 

ssl.enabled.protocols

默认值:[TLSv1.2, TLSv1.1, TLSv1]

描述:SSL连接启用的协议列表。

 

ssl.key.password

默认值:null

描述:私钥到密钥库文件的密码。 这对于客户端是可选的。

 

ssl.keymanager.algorithm

默认值:SunX509

描述:密钥管理器工厂用于SSL连接的算法。 默认值是为Java虚拟机配置的密钥管理器工厂算法。

 

ssl.keystore.location

默认值:null

描述 密钥存储文件的位置。 这对于客户端是可选的,可以用于客户端的双向身份验证。

ssl.keystore.password

默认值:null

描述:密钥存储文件的存储密码。 客户端是可选的,只有配置了ssl.keystore.location才需要。

ssl.keystore.type

默认值:jks

描述:密钥存储文件的文件格式。 对于客户端是可选的

ssl.protocol

默认值:TLS

描述:用于生成SSLContext的SSL协议。 默认设置为TLS,这在大多数情况下是正常的。 最近的JVM中允许的值是TLS,TLSv1.1和TLSv1.2。 旧的JVM可能支持SSL,SSLv2和SSLv3,但是由于已知的安全漏洞,它们的使用不受欢迎。

 

ssl.provider

默认值:null

描述:用于SSL连接的安全提供程序的名称。 默认值是JVM的默认安全提供程序。

 

ssl.trustmanager.algorithm

默认值:PKIX

描述:信任管理器工厂用于SSL连接的算法。 默认值是为Java虚拟机配置的信任管理器工厂算法。

 

ssl.truststore.location

默认值:null

描述:信任存储文件的位置。

 

ssl.truststore.password

默认值:null

描述 信任存储文件的密码。

 

ssl.truststore.type

默认值:jks

描述:信任存储文件的文件格式。

 

authorizer.class.name

默认值:

描述:应该用于授权的授权程序类

 

metric.reporters

默认值:[]

描述:用作度量报告器的类的列表。 实现MetricReporter接口允许插入将通知新度量标准创建的类。 总是包括JmxReporter以注册JMX统计信息。

 

metrics.num.samples

默认值:2

描述:维持计算度量的样本数。

 

metrics.sample.window.ms

默认值:30000

描述 计算度量样本的时间窗口。

 

quota.window.num

默认值:11

描述:要在客户端配额的内存中保留的样本数

 

quota.window.size.seconds

默认值:1

描述:客户端配额的每个样本的时间跨度

 

ssl.endpoint.identification.algorithm

默认值:null

描述:端点标识算法,使用服务器证书验证服务器主机名。

 

zookeeper.sync.time.ms

默认值:2000

描述:一个ZK follower能落后leader多久



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值