更新时间:2025-12-26 GMT+08:00
分享

Kafka常用配置参数

操作场景

MRS提供可视化的参数查看及修改界面,用户可根据实际业务的需求修改相关参数。

参数入口

  1. 登录MRS集群Manager。

    登录集群Manager具体操作,请参考访问MRS集群Manager

  2. 选择“集群 > 服务 > Kafka > 配置 > 全部配置”。
  3. 搜索以下参数名称,并根据实际需要修改参数值。
  4. 修改完成后保存配置,并重新启动配置过期的服务或实例以使配置生效。

常用参数

表1 参数说明

参数名称

参数说明

取值示例

log.dirs

Kafka数据存储目录列表。

  • 默认值:%{@auto.detect.datapart.bk.log.logs}
  • 如果有多个目录,以“,”分隔。
  • 每个新Partition会被创建在包含最少Partition的目录下。
  • %{@auto.detect.datapart.bk.log.logs}为系统安装时,集群中路径名为“/srv/BigData/kafka/dataN”的目录。

    例如,某节点给Kafka共挂载了2块盘,分别为“/srv/BigData/kafka/data1”、“/srv/BigData/kafka/data2”,那么安装Kafka时,会将该选项配置为“/srv/BigData/kafka/data1,/srv/BigData/kafka/data2”。

  • 删减Kafka数据保存路径,可能会造成数据丢失。
  • 如果需要修改该参数,详细介绍及操作请参考更改Kafka Broker的存储目录

%{@auto.detect.datapart.bk.log.logs}

KAFKA_HEAP_OPTS

Kafka启动Broker时使用的JVM选项。

  • 默认值:-Xmx6G -Xms6G
  • 当Broker上数据量较大时,可以适当调整堆内存大小。
  • 堆内存越大,Full GC的停顿时间可能越长,影响Kafka的实时性。

-Xmx6G -Xms6G

auto.create.topics.enable

是否允许自动创建Topic。

  • true:允许自动创建Topic。当生产者或消费者尝试访问一个不存在的主题时,Kafka会自动创建该主题,并使用默认的分区数(由参数“num.partitions”控制)和副本数(由参数“default.replication.factor”控制)。
  • false:不允许自动创建Topic,发消息前需要通过命令创建Topic。

默认值:true

true

num.partitions

自动创建Topic时的默认分区数。

  • “auto.create.topics.enable”参数值配置为“true”时生效。
  • 默认值:2

2

default.replication.factor

自动创建Topic时的默认副本数。

  • “auto.create.topics.enable”参数值配置为“true”时生效。
  • 该值必须小于等于Broker实例数。
  • 默认值:2

2

monitor.preInitDelay

服务启动后,第一次健康检查的延迟时间。

  • 如果服务启动需要较长时间,可以通过调大参数,来完成启动。
  • 单位毫秒。

10800000

Broker超时参数

表2 Broker相关超时参数

参数名称

参数说明

默认值

影响分析

controller.socket.timeout.ms

Controller连接Broker的超时时间。

单位:毫秒。

30000

该参数取值一般不需要调整。

group.max.session.timeout.ms

Consumer注册时允许的最大会话超时时间。

单位:毫秒。

1800000

允许Consumer配置的session.timeout.ms的最大值(不包含此值)。

group.min.session.timeout.ms

Consumer注册时允许的最小会话超时时间。

单位:毫秒。

6000

允许Consumer配置的session.timeout.ms的最小值(不包含此值)。

offsets.commit.timeout.ms

Offset提交请求的超时时间。

单位:毫秒。

5000

Offset提交时被延迟处理的最大超时时间。

replica.socket.timeout.ms

副本数据同步请求的超时时间,配置值不得小于replica.fetch.wait.max.ms

单位:毫秒。

30000

同步线程在发送同步请求之前等待通道建立的最大超时时间,要求配置大于replica.fetch.wait.max.ms

replica.fetch.wait.max.ms:副本与Leader之间通信的最大等待时间。

request.timeout.ms

设置客户端发送连接请求后,等待响应的超时时间。

单位:毫秒。

30000

Broker节点上的Controller、Replica线程中传入networkclient连接的超时参数,如果在超时时间内没有接收到响应,那么客户端重新发送,并在达到重试次数后返回请求失败。

transaction.max.timeout.ms

事务允许的最大超时。

单位:毫秒。

900000

如果客户端的请求时间超过该值,则Broker将在InitProducerIdRequest中返回一个错误。这样可以防止客户端超时时间过长,而导致消费者无法接收topic。

user.group.cache.timeout.sec

指定缓存中保存用户对应组信息的时间。

单位:秒。

300

缓存中用户和组对应关系缓存时间,超过此时间用户信息才会再次通过id -Gn命令查询,在此期间,仅使用缓存中的用户和组对应关系。

zookeeper.connection.timeout.ms

连接ZooKeeper的超时时间。

单位:毫秒。

45000

ZooKeeper连接超时时间,这个时间决定了zkclient中初次连接建立过程时允许消耗的时间,超过该时间,zkclient会主动断开。

zookeeper.session.timeout.ms

ZooKeeper会话超时时间。如果Broker在此时间内未向ZooKeeper上报心跳,则被认为失效。

单位:毫秒。

45000

ZooKeeper会话超时时间。

  • 作用一:这个时间结合传入的ZKURL中ZooKeeper的地址个数,ZooKeeper客户端以(sessionTimeout/传入ZooKeeper地址个数)为连接一个节点的超时时间,超过此时间未连接成功,则尝试连接下一个节点。
  • 作用二:连接建立后,一个会话的超时时间,如ZooKeeper上注册的临时节点BrokerId,当Broker被停止,则该BrokerId,会经过一个sessionTimeout才会被ZooKeeper清理。

Producer超时参数

表3 Producer相关超时参数

参数名称

参数说明

默认值

影响分析

request.timeout.ms

设置客户端发送连接请求后,等待响应的超时时间。

如果在超时时间内没有接收到响应,那么客户端重新发送,并在达到重试次数后返回请求失败。

单位:毫秒。

30000

请求超时时间,出现网络问题时,需调大此参数

如果配置过小,则容易出现Batch Expire异常。

Consumer超时参数

表4 Consumer相关超时参数

参数配置名称

参数说明

默认值

影响分析

connections.max.idle.ms

空闲连接的保留时间。

单位:毫秒

600000

连接空闲时间大于此时间,则会销毁该连接,有需要时重新创建连接。

request.timeout.ms

设置客户端发送连接请求后,等待响应的超时时间。

单位:毫秒。

30000

如果在超时时间内没有接收到响应,那么客户端重新发送,并在达到重试次数后返回请求失败。

相关文档