1.测试目的

本次性能测试在正式环境下单台服务器上Kafka处理MQ消息能力进行压力测试。测试包括对Kafka写入MQ消息和消费MQ消息进行压力测试,根据10w、100w和1000w级别的消息处理结果,评估Kafka的处理性能是否满足项目需求。(该项目期望Kafka能够处理上亿级别的MQ消息)

2.测试范围及方法

2.1测试范围概述

测试使用Kafka自带的测试脚本,通过命令对Kafka发起写入MQ消息和Kafka消费MQ消息的请求。模拟不同数量级的MQ消息写入和MQ消息消费场景,根据Kafka的处理结果,评估Kafka是否满足处理亿级以上的消息的能力。

2.2性能测试场景设计

2.2.1Kafka写入消息压力测试

测试场景 MQ消息数 (W) 每秒写入消息数(条) 记录大小(单位:字节)
Kafka消息写入测试 10 2000 1000
Kafka消息写入测试 100 5000 1000
Kafka消息写入测试 1000 5000 1000

2.2.2Kafka消费消息压力测试

测试场景 消费MQ消息数 (W)
Kafka消息消费测试 10
Kafka消息消费测试 100
Kafka消息消费测试 1000

2.3测试方法简要描述

2.3.1测试目的

验证带台服务器上Kafka写入消息和消费消息的能力,根据测试结果评估当前Kafka集群模式是否满足上亿级别的消息处理能力。

2.3.2测试方法

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

测试项 压测消息数(单位:W) 测试命令
写入MQ消息 10 ./kafka-producer-perf-test.sh --topic test_perf --num-records 100000 --record-size 1000 --throughput 2000 --producer-props bootstrap.servers=localhost:9092
写入MQ消息 100 ./kafka-producer-perf-test.sh --topic test_perf --num-records 1000000 --record-size 1000 --throughput 5000 --producer-props bootstrap.servers=localhost:9092
写入MQ消息 1000 ./kafka-producer-perf-test.sh --topic test_perf --num-records 10000000 --record-size 1000 --throughput 5000 --producer-props bootstrap.servers=localhost:9092
消费MQ消息 10 ./kafka-consumer-perf-test.sh --broker-list localhost:9092 --topic test_perf --fetch-size 1048576 --messages 100000 --threads 1
消费MQ消息 100 ./kafka-consumer-perf-test.sh --broker-list localhost:9092 --topic test_perf --fetch-size 1048576 --messages 1000000 --threads 1
消费MQ消息 1000 ./kafka-consumer-perf-test.sh --broker-list localhost:9092 --topic test_perf --fetch-size 1048576 --messages 10000000 --threads 1

注:脚本执行目录 /usr/local/Cellar/kafka/2.1.0/libexec/bin

3.测试环境

硬件:Mac book、16G内存、4核处理器
测试工具:Kafka自带压测脚本

4.测试结果

4.1测试结果说明

本次测试针对Kafka消息处理的能力 进行压力测试,对Kafka集群服务器中的一台进行MQ消息服务的压力测试,关注Kafka消息写入的延迟时间是否满足需求。对Kafka集群服务器中的一台进行MQ消息处理的压力测试,验证Kafka的消息处理能力。

4.2测试结果

4.2.1写入MQ消息

设置消息总数(单位:w) 设置单个消息大小(单位:字节) 设置每秒发送消息数 实际写入消息数/秒 95%的消息延迟(单位:ms)
10 1000 2000 1999.52 1
100 1000 5000 4999.75 1
1000 1000 5000 4999.97 1

压测结果截图
写入10w消息压测结果

写入100w消息压测结果

写入1000w消息压测结果

kafka-producer-perf-test.sh 脚本命令的参数解析(以100w写入消息为例):
–topic topic名称,本例为test_perf
–num-records 总共需要发送的消息数,本例为100000
–record-size 每个记录的字节数,本例为1000
–throughput 每秒钟发送的记录数,本例为5000
–producer-props bootstrap.servers=localhost:9092 (发送端的配置信息,本次测试取集群服务器中的一台作为发送端,可在kafka的config目录,以该项目为例:/usr/local/kafka/config;查看server.properties中配置的zookeeper.connect的值,默认端口:9092)

MQ消息写入测试结果解析:
本例中写入100w条MQ消息为例,每秒平均向kafka写入了4.77MB的数据,大概是4999.75条消息/秒,每次写入的平均延迟为0.94毫秒,最大的延迟为153毫秒,1ms内占95%。

4.2.2消费MQ消息

消费消息总数(单位:w) 共消费数据(单位:M) 每秒消费数据(单位:M) 每秒消费消息数 消费耗时(单位:s)
10 95.82 187.15 196244.1 0.5
100 954.03 319.60 335133.3 3.0
1000 9537.11 411.01 430976.81 23.2

压测结果截图

消费10w消息压测结果

消费100w消息压测结果

消费1000w消息压测结果

kafka-consumer-perf-test.sh 脚本命令的参数为:
–zookeeper 指定zookeeper的链接信息,本例为localhost:2181 ;
–topic 指定topic的名称,本例为test_perf,即4.2.1中写入的消息;
–fetch-size 指定每次fetch的数据的大小,本例为1048576,也就是1M
–messages 总共要消费的消息个数,本例为1000000,100w

以本例中消费100w条MQ消息为例总共消费了954.03M的数据,每秒消费数据大小为319.6081M,总共消费了1000373条消息,每秒消费335133.33条消息。

5.结果分析

kafka写入MQ消息设置5000条/秒时,消息延迟时间小于等于1ms,在可接受范围内,说明消息写入及时;kafka消费MQ消息时,1000W待处理消息的处理能力如果在每秒40w条以上,那么处理结果是理想的。
根据Kafka处理10w、100w和1000w级的消息时的处理能力,可以评估出Kafka集群服务,是否有能力处理上亿级别的消息。
本次测试是在正式环境集群服务中的单台服务器上进行,基本不需要考虑网络带宽的影响。所以单台服务器的测试结果,对评估集群服务是否满足上线后实际应用的需求,很有参考价值。

6、原文链接

https://blog.csdn.net/laofashi2015/article/details/81111466
https://www.cnblogs.com/xiao987334176/p/10075659.html
注:以上操作均在 Mac 系统上实践。

Kafka压力测试(写入MQ消息压测和消费MQ消息压测)相关推荐

  1. kafka压力测试说明

    1 整体环境说明 1.1 硬件环境 1. 磁盘:SATA磁盘2块,磁盘阵列为RAID1 2. CPU****:2个4核CPU.具体参数:Intel(R) Xeon(R) CPU E5405 @ 2.0 ...

  2. 项目经验之Kafka压力测试以及kafka机器数量计算

    Kafka压测 用Kafka官方自带的脚本,对Kafka进行压测.Kafka压测时,可以查看到哪个地方出现了瓶颈(CPU,内存,网络IO).一般都是网络IO达到瓶颈. kafka-consumer-p ...

  3. 心理压力测试脸型软件,心理学:你是哪种脸型?测一测你真实的个性与内心

    在心理学专家的眼中,面部除了记载喜怒哀乐,也会深切印刻一个人的个性和人生. 中国道家的面相术也借助"相由心生",即依据人的外在体现和容颜,来判定性格,这跟心理学专家的依据似乎是互通 ...

  4. 基于python的压测工具_基于Python和SIPp的自动化压力测试系统设计和实现

    信斌 王桂花 摘要:首先,分析了现有测试系统的不足,之后,介绍了软件组成和运行环境说明,最后,设计了基于Python和SIPp的自动化压力测试系统,并给出了相关代码.新的测试系统克服了现有测试系统的不 ...

  5. 数据仓库 — 07_Kafka的安装与部署(Kafka命令行操作指令、Kafka集群群起脚本、压力测试、节点数量计算、hadoop_zookeeper_flume_kafka群起脚本、默认端口总结)

    文章目录 1 Kafka的安装与配置 2 Kafka命令行操作 2.1 查看当前服务器中的所有topic 2.2 创建topic 2.3 删除topic 2.4 发送消息 2.5 消费消息 2.6 查 ...

  6. WebBench压力测试工具(详细源码注释+分析)

    WebBench压力测试工具(详细源码注释+分析) 本文适合人群:对WebBench实现感兴趣的人 WebBench原理: Linux下使用的服务器压力测试工具,利用fork建立多个子进程,每个子进程 ...

  7. python脚本实现压力测试

    import base64 import os import urllib import numpy as np import requests, time, json, threading, ran ...

  8. Jmeter做接口的压力测试

    章节一压力测试课程介绍 1.2018年亿级流量压测系列之Jmeter4.0课程介绍和效果演示 简介: 讲解课程安排,使用的Jmeter版本 讲课风格:涉及的组件,操作配置多,不会一次性讲解,会先讲部分 ...

  9. http压力测试工具

    HTTP 压力测试工具 一.http_load 程序非常小,解压后也不到100K http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工 具,它可以以 ...

最新文章

  1. 高考临考突发情况应急预案大全
  2. 基础省选+NOI-第4部分 动态规划
  3. Exchange Server 2016 独立部署/共存部署 (二)—— 先决条件
  4. sstream和strstream以及fstream
  5. ae图片无缝循环滚动_HTML图片滚动
  6. input里面check 状态检测
  7. CodeM2018复赛
  8. 本地搭建mysql数据库
  9. 海康SDK语音转发实现(ubuntu)
  10. LTE中SRB---无线资源承载
  11. 004Spring事务001JdbcTemplate
  12. 怎么把pdf文件转换成word格式文档
  13. lightoj 1009 - Back to Underworld 【DFS】
  14. 访问Windows 11恢复环境的5种简单方法
  15. 如何进行Web服务的性能测试
  16. 谷歌gmail注册入口_如何下载所有Gmail,日历,文档和其他Google数据的备份存档...
  17. 数据库,数据库管理系统
  18. python汉语词典_Python 字典(Dictionary)
  19. Redis命令之HGetAll性能问题解决方案
  20. kuangbin专题八 HDU4081 Qin Shi Huang's National Road System(次小生成树)

热门文章

  1. 华为鸿蒙OS发布!余承东:随时可替换安卓;方舟编译器将支持混合编译
  2. MongoDB导入json数据
  3. 第 4 章 Hypertable
  4. mysql中获取一天、一周、一月时间数据的各种sql语句写法
  5. 领域驱动设计:软件核心复杂性应对之道
  6. 【深入剖析Tomcat笔记】第一篇 基础知识储备
  7. 删除字符串中多余的空白字符和空行(C语言实现)
  8. ADODB类库操作查询数据表
  9. 5G NGC — 关键技术 — 计算与存储分离
  10. 边缘计算 — MEC 与运营商