RabbitMQ 性能、压力测试数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RabbitMQ 性能、压力测试数据相关的知识,希望对你有一定的参考价值。

参考技术A Linux、1G、1核、1M带宽

处理器名称: Intel Core i7
处理器速度: 2.2 GHz
处理器数目: 1
核总数: 4
内存: 16 GB

事务提交的方式下,每次发送1kb的内容

现象:开启一个线程时,income:40 50/s,开启6个线程时,income:240 250/s
结论:开启事务的提交方式,压力在生产者端

去掉事务后,每次发送1kb的内容

现象:开启一个线程时,income:500 800/s,开启6个线程时,income:400 700/s
结论:无事务时,效率是事务提交方式的10+倍。

事务提交的方式下,每次发送内容为: 这是一个生产的消息QAQ

现象:开启一个线程时,income:20 50/s,开启6个线程时,income:80 230/s
结论:无事务时,压力在生产者端

去掉事务后,每次发送内容为: 这是一个生产的消息QAQ

现象:开启一个线程时,income:3000 5000/s,开启6个线程时,income:3000 9000/s
结论:无事务时,效率大大提升,远远的超越事务方式,1000倍有余

推荐文章: RabbitMQ不同Confirm模式下的性能对比

测试123性能测试之压力测试

https://sq.163yun.com/blog/article/196036888966840320

线上问题:由于上游某系统数据分布突变,引起下游本系统的一个特定时间性能指标未达线。

性能需求:

1.  调整数据分布,重新测量系统在新的压力场景下的吞吐量和关键性能指标,及此特定时间

2.  需要提高系统的处理能力,使得此时间性能达标,并且对其他性能指标无大幅度影响

 

一、性能测试数据准备

1. 铺底数据准备

铺底数据有目的: 铺底数据的首要目的是让性能测试环境与线上保持一致,或者说接近线上真实情况。

铺底数据量多少合适? 这个完全根据产品的规模来预估,比如产品预计半年后注册用户数达到100w,则铺底的时候需要铺底100w用户账号。 如果是已上线产品,根据线上数据库数据量进行预估,可以根据用户规模的比列进行铺底,如线上注册用户数一千万,线下铺底注册用户数100w,则总体数据规模为线上的十分之一左右。实际情况下,这里会略微复杂,比如还要考虑线上数据库集群和测试集群的硬件差异等,需做适当的调整。

1) 一个是保证待测系统有一定的规模,比如半年或一年后的用户规模。 只做铺底,在压测中不会访问到的数据。

这部分数据是为了使数据库达到一定的规模,以发现数据库查询、更新等性能瓶颈,如忘记建立索引,查询SQL不合理等问题。

只为铺底,压测时不会用到的这部分数据,在预设的过程中就比较随意了,不用考虑数据是否合理,也不用考虑业务关联关系,只要符合数据库设计规则,能插入数据库即可。

===》 本次测试:维持系统数据库中的历史数据为过去半年的数据量不变。

2) 另一个是为压测做准备,准备每个要压测的请求需要使用到的数据,这部分数据涉及到具体的业务,对性能测试结果影响比较大,具体说明可参考“参数化数据准备”章节。

在压测时要用到的数据,比如API要传参过去的数据,或者请求响应数据。这部分数据在铺底的时候就要精细化的设计,包括数据大小,数量,分布等。

===》本次测试:为保证系统对输入数据满足预设分布的前提之下,还要满足预设业务逻辑处理输出的分布要求,对相应的数据库静态数据提前设定。

 

2. 参数化数据准备

 

 

二、性能测试数据准备方法

1. 从线上数据库导入真实数据

2. 根据业务规则构造模拟数据

 

以上是关于RabbitMQ 性能、压力测试数据的主要内容,如果未能解决你的问题,请参考以下文章

Web性能压力测试工具之WebBench详解

Jmeter对RabbitMQ压力测试

刷题面筋-测开-比较压力测试负载测试性能测试

测试123性能测试之压力测试

Web性能压力测试工具之WebBench详解

(总结)Web性能压力测试工具之WebBench详解