如何进行大数据报文的订单推送性能测试
业务背景:
现在很多企业都有自己的全渠道数字平台,并且对接了很多不同的线上电商渠道,实现多元化营销,提高企业经营。比如京东、淘宝、拼多多等等。
那么这些电商渠道的订单会定时推送到中台,并且是大批量的推送订单到订单业务中台进行管理。所以就有了这方面的一个性能测试,那么应该如何做呢。
一、数据准备
一次请求会有大量的订单数据,也就是说,请求的报文可能会很大,比如500个订单一次推送过来,可能一个报文的数据会超过2M。
首先我们会利用一个HTTP请求(该请求只用来生成数据),请求体中只包含订单的字段数据,订单ID等数据需要做参数化。
下面的beanshell是用来在HTTP请求之前进行的数据的保存,也是最核心的,主要是用来把上面截图的请求参数进行不断追加并保存到本地目录。
这样做的目的,主要是每个订单都有不同的订单ID,我们这一步可以生成不同订单ID的报文数据拼接在一起
我们这次请求1000次,看看生成的数据结果二、读取本地数据
可以通过CSV数据文件设置配置读取本地txt数据,并设置变量data
然后进行接口请求前的数据预处理,得到完整的数据格式。
并且设置变量:requests
三、设置请求数据参数化
通过上面设置的变量requests,放在我们的请求体中并参数化,如下
四、查看测试结果
因为报文有点大,像这次有1M多的报文,等到响应会有点慢。这个时候我们就要通过监控工具来看MQ等
下面是其中一次的测试结果分析
订单推送-接口中心业务:执行时间(2022-04-01 16:19:02)。10个线程循环一次,500单的数据量大概1.45MB,成功率100%。TPS:10个线程同时推送订单,每个线程一个报文推送500单,总计推送5000单,总计3048毫秒完成推送,计算每秒可以推送1640单。
AvgRT:平均响应时间趋势,整个场景的平均响应时间在3048毫秒。
服务器资源:K8S集群各node节点资源使用正常,各服务pod容器没有超过K8S的资源limit最大预设值
Mysql数据库:数据链接和线程数等状态数据正常,没有大于1秒的慢sql。
正文到此结束