
# Kafka常用配置参数
本章节内容适用于MRS 3.x及后续版本。
#### 参数入口
请参考[修改集群服务配置参数](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_2125.html)进入Kafka服务参数"全部配置"页面。
#### 常用参数
表1参数说明 
| 配置参数                       | 说明                                                  | 缺省值                                  |
|:---|:---|:---|
| log.dirs                   | Kafka数据存储目录列表，以逗号分隔多个目录。                            | %{@auto.detect.datapart.bk.log.logs} |
| KAFKA_HEAP_OPTS            | Kafka启动Broker时使用的jvm选项。建议根据业务需要进行设置。                | -Xmx6G -Xms6G                        |
| auto.create.topics.enable  | 是否自动创建Topic，若参数设置为false，发消息前需要通过命令创建Topic。          | true                                 |
| default.replication.factor | 自动创建Topic时的默认副本数。                                   | 2                                    |
| monitor.preInitDelay       | 服务启动后，第一次健康检查的延迟时间。如果启动需要较长时间，可以通过调大参数，来完成启动。单位为毫秒。 | 600000                               |
   
#### 超时参数
表2Broker相关超时参数 
| 参数名称                            | 参数说明                                                       | 默认值     | 影响分析                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| controller.socket.timeout.ms    | Controller连接Broker的超时时间。单位：毫秒。                             | 30000   | Controller连接Broker的超时时间，一般不需要调整。                                                                                                                                                                                                                                                                      |
| 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。                                                                                                                                                                                                                                           |
| 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清理。 |
   
表3Producer相关超时参数 
| 配置名称               | 说明                     | 默认值   | 影响分析                                            |
|:---|:---|:---|:---|
| request.timeout.ms | 指定发送消息请求的请求超时时间。单位：毫秒。 | 30000 | 请求超时时间，出现网络问题时，需调大此参数；配置过小，则容易出现Batch Expire异常。 |
   
表4Consumer相关超时参数 
| 配置名称                    | 说明                                                    | 默认值    | 影响分析                                      |
|:---|:---|:---|:---|
| connections.max.idle.ms | 空闲连接的保留时间。单位：毫秒                                       | 600000 | 空闲连接的保留时间，连接空闲时间大于此时间，则会销毁该连接，有需要时重新创建连接。 |
| request.timeout.ms      | 消费请求的超时时间。单位：毫秒。  | 30000  | 请求超时时间，请求超时会失败然后不断重试。                     |
   
