
# Kafka性能调优
#### 操作场景
当Kafka集群数据量持续增长时，Broker可能面临启动缓慢、副本同步延迟、吞吐量不足及内存瓶颈等性能问题。本章节介绍Broker核心参数的调优方法：通过增加数据恢复线程数缩短启动时间，调大后台任务线程数提升任务处理效率，增大副本同步线程数加快数据同步，设置I/O处理线程数以提升吞吐量，并根据数据负载合理调整JVM堆内存等。各项参数需综合考虑系统资源，避免线程过多适得其反。
#### 参数调优
1. 登录MRS集群Manager。 
   登录集群Manager具体操作，请参考[访问MRS集群Manager](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0128.html)。
   
   
2. 选择"集群 \> 服务 \> Kafka \> 配置 \> 全部配置"。
3. 搜索以下参数名称，并根据实际需要修改参数值。 
   表1调优参数 
   | 配置参数                              | 默认值           | 调优场景                                                                                                                                                                                                                                                                                                                                                                               |
   |:---|:---|:---|
   | num.recovery.threads.per.data.dir | 10            | 每个数据目录用来数据恢复的线程数目。 - 线程越多，恢复过程可能越快，但性能可能会降低。  - 在Kafka启动过程中，数据量较大情况下，可调大此参数，可以提升启动速度。  - 取值范围为1\~2147483647。                  |
   | background.threads                | 10            | Broker后台任务处理的线程数目，例如过期数据文件的删除线程。 - 线程越多，任务处理的并行度越高，但也会占用更多系统资源，一般不需要修改。  - 数据量较大的情况下，可适当调大此参数，以提升Broker处理能力。  - 取值范围为1\~512。   |
   | num.replica.fetchers              | 1             | 副本向Leader请求同步数据的线程数。 - 线程越多，副本同步的并行度越高，但也会占用更多系统资源（如CPU和网络带宽）。  - 增大该参数会增加副本的I/O并发度。  - 取值范围为1\~2147483647。                              |
   | num.io.threads                    | 8             | Broker用于处理请求的线程数，其中可能包括磁盘I/O。 - 线程数越多，Kafka能同时处理的请求越多，从而提升吞吐量。但线程数过高可能导致占用资源增加，反而降低性能。  - 这个线程数目建议至少等于硬盘的个数。  - 取值范围为1\~256。    |
   | KAFKA_HEAP_OPTS                   | -Xmx6G -Xms6G | Kafka Broker进程的JVM堆内存。 - 当Broker上数据量较大时，应适当调整堆内存大小。  - 堆内存越大，Full GC的停顿时间可能越长，影响Kafka的实时性。                                                                                             |
      
   
   
4. 修改完成后保存配置，并重新启动配置过期的服务或实例以使配置生效。 
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
   如果当前为滚动重启且当前Topic存在多副本，则对业务无影响。否则重启期间会导致Kafka服务不可用，依赖该服务的上层服务也将受到影响。
   
   
 
#### 相关文档
如果需要修改其他Kafka相关参数，可参考[Kafka常用配置参数](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1033.html)。
