0
点赞
收藏
分享

微信扫一扫

腾讯云CKafka压测踩坑记录

花明 2021-10-04 阅读 39

由于最近项目要上腾讯云,不得不对腾讯云CKafka进行压测,评估kafka的处理性能是否满足项目需求。(项目期望Kafka能够处理上千万级别的MQ)

一、 明确测试目的

本次性能测试在UAT环境下腾讯云服务器上CKafka处理MQ消息能力进行压力测试。测试包括对Kafka写入MQ消息和消费MQ消息进行压力测试,根据100w、500w和1000w级别的消息处理结果,评估Kafka的处理性能极限值。

二、 Kafka测试前期准备

2.1  Kafka的性能测试主要测试kafka的吞吐量,kafka吞性能为生产者在向kafka传入消息时的写入量,kafka的吐性能为消费者在kafka集群中消费的能力,也就是读取量。

2.2 Borker相关

        Kafka的borker是kafka集群的缓存代理,消息中间件处理结点,一个Kafka节点就是一个broker,多个broker可以组成一个Kafka集群。具体可参考kafka官方文档。

2.3 Cousumer相关

       Consumer为kafka的消费者,同一个topic消费者越多越快,但是需要注意的是,消费者的数量不能超过topic的分区数量,因为每个topic的每个分区只能被一个消费者消费,多出来的消费者会无信息可消费。导致资源浪费。具体可参考腾讯云Ckafka指南。

三、Kafka常用参数配置

3.1 生产端常用参数配置如下:

消费者参数配置如下:


Broker 配置参数说明如下:


四、场景设计

4.1 Kafka写入消息压力测试


4.2 Kafka消费压测测试

五、测试方法

5.1 在服务器上使用Kafka自带的测试脚本,分别模拟100w、500w和1000w的消息写入请求,查看Kafka处理不同数量级的消息数时的处理能力,包括每秒生成消息数、吞吐量、消息延迟时间。Kafka消息吸入创建的topic命名为test-2,使用命令发起消费该topic的请求,查看Kafka消费不同数量级别的消息时的处理能力。

5.2 压测命令(脚本执行目录:bin/)

            zookeeper脚本:./kafka-consumer-perf-test.sh --zookeeper IP:port --topic forbid_resources_topic --fetch-size 1048576 --messages 10000 --threads 1

 写入脚本命令的参数解析:

消费脚本参数解析:


六、测试结果

写入100W结果:

消费100W结果:

注意:这里的坑就来了实际消费数量与脚本设置的消费数量不一致,在这里的这个问题查了很多资料发现两个问题,一会下面慢慢解释,先来看每个字段的意思。

我们先来看看消费的每个数据字段的含义,如下图:

上图我们可以看出,data.consumed.in.nMsg(总消费消息数)与脚本中messages设置的值不一致;设置消费100W,实际消费121431条消息。

坑就在这里,由于是买的腾讯云的PASS服务,很多东西都没办法获取权限查看,只能一步步和客服沟通,挨个排查。

腾讯售后客服也给发了案例和教程,发现教程里也是实际消费和设置消费数不一致;,此处省略一万字。。。

最终在无意之间更改了Topic分区数之后再次运行脚本发现问题消失了,测试环境的Topic分区设置为1,后续增加分区数发现能实际消费和设置消费消息数一致。最后经过多次测试最终Topic分区数设置为3。这次之后发现忽略了腾讯云提供的压测指南中的底部有几句话;

在多次和腾讯售后客服沟通和交流,后续也有和腾讯相关后端开发沟通,发现竟然连开发都解释不清楚出现这个问题的原因,只要深入了解,就会含糊解释说:“我们卖了这么多产品,Kafka肯定不会有问题的”,其内部也没有关于Kafka相关的压测分析案例。可能是我寡闻,在此记录,也是分享出此次压测的踩坑经历。

举报

相关推荐

踩坑记录一

flink 踩坑记录

jenkins踩坑记录

错误踩坑记录

vue 踩坑记录

RabbitMq踩坑记录

0 条评论