- 一、问题
- Kafka UI fetched统计问题
开发完了代码,洋洋洒洒部署上线。一切都很OK。程序正常启动,kafka生产数据正常发送了。然后查看Kafka的实时曲线图。刚生产的数据,还没有通知消费端消费,却发现《各 Kafka Broker Topics 中的总 Bytes Fetched》的量是《各 Kafka Broker Topics 中的总 Bytes Received》的2倍。纳尼,测试环境没有这个问题啊。。。。第一次在正式环境使用kafka,顿时紧张不行,仔细检查程序,确认不是自己主动消费,并且还没有对外公开topic名称和kafka地址,也不是下游消费的。奇了怪去找运维,运维帮忙查kafka在zookeeper下的consumers目录,同样一无所获,并没有发现消费者组消费这个topic。2个小时一直很奇怪到底为什么,看了别人的topic发现也是有这个问题。
开始定位
1.现象
Kafka UI图显示:《各 Kafka Broker Topics 中的总 Bytes Fetched》的量是《各 Kafka Broker Topics 中的总 Bytes Received》的2倍
2.可能原因分析
(1)真的有两个消费者组在消费,比如有些消费者定义正则发现topic,刚好这个topic在被人定义的正则范围内。但是我们的命名是有规范的,这个可能性不大。为了谨慎,还是改了topic名字加以验证,还是同样的2倍关系。那么这个原因就被排除了。
(2)测试环境kafka和生产环境版本不一致,有可能有《各 Kafka Broker Topics 中的总 Bytes Fetched》统计不准的bug,但是很快就排除了这种想法。就算不准不应该有这种明显的2倍关系,一定是正常的程序逻辑在做着什么。
(3)既然测试环境和生产环境不一致,那么两个环境的差别是什么呢???想了很久,忽然想到了副本数,测试环境的topic和生产环境topic的差别在于副本数。测试环境副本数设置是1的,但是生产环境设置的是3啊啊,叮!这就说明生产者生产消息后创建副本时需要遍历消息的。刚好是2倍的关系。
3.验证
在测试环境将topic的副本数修改为3份,观察测试环境Kafka的UI统计图。果然也是有《各 Kafka Broker Topics 中的总 Bytes Fetched》的量是《各 Kafka Broker Topics 中的总 Bytes Received》的2倍关系。
4.总结
确认不是问题。只是自己知之尚浅,继续努力吧!
以前不知道这个副本也是统计在《各 Kafka Broker Topics 中的总 Bytes Fetched》里的,谨记。
- Kafka UI fetched统计问题
- 二、命令记录
- Kafka修改topic副本数
-
创建json文件 kafka_json_file.json
{"version":1, "partitions":[ {"topic":"topicName","partition":0,"replicas":[0,1,2]}, {"topic":"topicName","partition":1,"replicas":[0,1,2]}, {"topic":"topicName","partition":2,"replicas":[0,1,2]}, {"topic":"topicName","partition":3,"replicas":[0,1,2]}, {"topic":"topicName","partition":4,"replicas":[0,1,2]}, {"topic":"topicName","partition":5,"replicas":[0,1,2]}, {"topic":"topicName","partition":6,"replicas":[0,1,2]}, {"topic":"topicName","partition":7,"replicas":[0,1,2]} ] }
-
执行命令,修改topic副本数
kafka-reassign-partitions --zookeeper localhost:2181/kafka --reassignment-json-file kafka_json_file.json --execute
-
- Kafka修改topic副本数
Kafka 相关命令和问题记录
最新推荐文章于 2022-09-26 14:23:59 发布