Kafka - 生产调优手册
一、硬件配置选择
1.1 峰值计算

1.2 购买多少服务器

1.3 磁盘选择

1.4 内存选择

kafka的内存 = 堆内存(kafka内部配置)+ 页内存(服务器内存)

如果生产环境数据量很大,可以设置为10G-15G


查看kafka GC情况
YGC,年轻代GC次数,这里是36次可以接受

查看堆内存的使用情况
![]()
这里能看到总量是2G,使用了19.45%

1.5 CPU选择

注意:kafka这三个线程比较重要,消耗线程较多。但还有其他很多别的线程。
假设你买了32核心CPU,一般要预留给这三个线程24个,留给其他任务8个。
那么图里的数字就要按比例改改了:
num.io.thread = 24 * 50% = 12
其他的以此类推
1.6 网络选择
注意:通常说的百兆带宽单位是bit, 换算成字节MB也就12.5M/s
因此要选择千兆带宽。

二、生产者调优
2.1 kafka生产者核心参数配置
【生产者全流程图】

核心参数包括:

max.in.flight.requests.per.connection 要和 enable.idempotence幂等性 搭配使用,能解决【生产者全流程图】中 sender线程部分 到 kafka集群 这中间的乱序问题。
如果不开启幂等性,max.in.flight.requests.per.connection就只能设置为1了。

2.2 生产者如何提高吞吐量

2.3 数据可靠性

2.4 数据去重
只开启幂等性,只能保证单分区单会话内去重;
想要完全去重,需要加上“事务”

2.5 数据有序

2.6 数据乱序

三、Broker调优
3.1 Broker更新模式介绍
- read-only: broker重启后才能生效
- per-broker: 动态生效(对每一个broker),无需重启
- cluster-wide:整个集群范围的动态生效

3.2 Broker核心参数配置
【kafka broker整体工作流程图】





listeners:学名叫监听器,其实就是告诉内网环境连接者要通过什么协议访问指定主机名和端口开放的 Kafka 服务。
advertised.listeners:和 listeners 相比多了个 advertised。Advertised 的含义表示宣称的、公布的,就是说这组监听器是 Broker 用于对外发布的。如果clients在内网环境访问Kafka不需要配置这个参数
常见的玩法是:你的Kafka Broker机器上配置了双网卡,一块网卡用于内网访问(即我们常说的内网IP);另一个块用于外网访问。那么你可以配置listeners为内网IP,advertised.listeners为外网IP。
3.3 服役新节点/退役旧节点


3.4 增加分区

3.5 增加副本因子
不能通过命令行添加,只能通过json文件增加

3.6 手动调整分区副本存储

3.7 leader partition 负载平衡

3.8 自动创建主题

浙公网安备 33010602011771号