
# Kafka常用配置参数
#### 操作场景
MRS提供可视化的参数查看及修改界面，用户可根据实际业务的需求修改相关参数。
#### 参数入口
1. 登录MRS集群Manager。 
   登录集群Manager具体操作，请参考[访问MRS集群Manager](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0128.html)。
   
   
2. 选择"集群 \> 服务 \> Kafka \> 配置 \> 全部配置"。
3. 搜索以下参数名称，并根据实际需要修改参数值。
4. 修改完成后保存配置，并重新启动配置过期的服务或实例以使配置生效。 
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
   如果当前为滚动重启且当前Topic存在多副本，则对业务无影响。否则重启期间会导致Kafka服务不可用，依赖该服务的上层服务也将受到影响。
   
   
 
#### 常用参数
表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的存储目录](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1038.html)。   | %{@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超时参数
表2Broker相关超时参数 
| 参数名称                            | 参数说明                                                                                       | 默认值                                         | 影响分析                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|:---|
| 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超时参数
表3Producer相关超时参数 
| 参数名称               | 参数说明                                                                                                                               | 默认值   | 影响分析                                                                             |
|:---|:---|:---|:---|
| request.timeout.ms | 设置客户端发送连接请求后，等待响应的超时时间。 如果在超时时间内没有接收到响应，那么客户端重新发送，并在达到重试次数后返回请求失败。 单位：毫秒。 | 30000 | 请求超时时间，出现网络问题时，需调大此参数。 如果配置过小，则容易出现Batch Expire异常。 |
   
#### Consumer超时参数
表4Consumer相关超时参数 
| 参数配置名称                  | 参数说明                                                         | 默认值    | 影响分析                                       |
|:---|:---|:---|:---|
| connections.max.idle.ms | 空闲连接的保留时间。 单位：毫秒               | 600000 | 连接空闲时间大于此时间，则会销毁该连接，有需要时重新创建连接。            |
| request.timeout.ms      | 设置客户端发送连接请求后，等待响应的超时时间。 单位：毫秒。 | 30000  | 如果在超时时间内没有接收到响应，那么客户端重新发送，并在达到重试次数后返回请求失败。 |
   
