电商性能测试实战 | JMeter 插件 Ultimate Thread Group 完成梯度递增场景的压测

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 电商性能测试实战 | JMeter 插件 Ultimate Thread Group 完成梯度递增场景的压测

前面几篇文章已经介绍完一个电商从注册登录到购物下单的典型场景的 Jmeter压测脚本,具体可参考前期文章:基于电商模式的性能测试(五)-基于Jmeter完成一次日常典型电商场景的压测(下单-支付)。

在实际压测前,我们还需要对场景做适当的调整。

从 ThreadGroup中看,我们的 Thread会在某个时间点同时起多个,而日常场景中我们需要的可能是一个递增的梯度加压的方式。

为了实现梯度递增,我们就需要借助于插件 UltimateThreadGroup

先看下 UltimateThreadGroup插件的面板信息,如下:

  • 参数解释:

  • StartThreadsCount:当前行启动的线程总数
  • InitialDelay/sec:延时启动当前行的线程,单位:秒
  • StartupTime/sec:启动当前行所有线程达峰值所需时间,单位:秒
  • HoldLoadFor/sec:当前行线程达到峰值后的稳定加载时间,单位:秒
  • ShutdownTime:停止当前行所有线程所需时间,单位:秒
  • 文字的描述还是稍显晦涩, UltimateThreadGroup插件有个很好的地方就是下方的图表,它会根据你的设定而展示出趋势图,那么现在我们设定如下参数:
  • StartThreadsCount:100
  • InitialDelay/sec:10秒
  • StartupTime/sec:200秒
  • HoldLoadFor/sec:100秒
  • ShutdownTime:10秒
    从插件的趋势图我们可以看到在延迟10秒后100个线程在200秒时间内逐步从0递增至100,然后持续100秒的时间,最后在10秒的时间内有逐步从100递减到0。
    当然你还可以继续添加 ThreadSchedule,趋势图会帮你绘制出综合的线程运行趋势:

1) 选择插件 UltimateThreadGroup

2)将写好的Jmeter脚本整体移至 UltimateThreadGroup下

3)现在我们需要的场景是:

  • 开始我们需要在60秒的时间内起是10个thread,然后保持运行
  • 接着我们继续在60秒的时间内再起10个thread,然后和开始的10个线程一起保持运行100秒后结束
    具体设置如下:

1)命令启动,实际运行脚本期间会用命令行的方式,减少客户端自身运行性能造成的测试影响

1.$ jmeter

n

t

RegisterLogin

.

jmx

2)在grafana中查看运行数据

从数据中简单的分析,可以看到:

线程数在设定的120秒时间内均匀的从0递增至20

错误率在38分30秒的时候出现剧增,而这个时候的线程数为5,说明在 ActiveUser达到5的时候系统出现了问题造成错误率陡增。

从错误率和响应时间来看,结果较差的接口主要集中在下单流程这块,而首页的响应时间也很大,很可能是因为首页相关的表数据是和订单的表数据有关联的,因而订单的响应时间增加也会造成首页的耗时增加。

  • 插件添加后在如下位置选择

打开后的面板如下:

现在可以设置当平均响应时间大于200ms持续10秒,平均延迟时间大于300ms持续10秒或者错误率大于1%持续5秒时测试停止。

可以看到当我们的响应时间持续10秒超过200ms时,测试自动停止了。

总结

客户端方面的电商压测实战学习暂时到这里了,后面如果还想继续深入学习就需要关注服务端的指标了,依然可以结合 docker+grafana+prometheus的方式来监控服务端的各项指标进行分析。


更多技术文章

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
2月前
|
运维 关系型数据库 流计算
实时计算 Flink版产品使用问题之作业运维界面无状态启动并指定时间和代码里指'scan.startup.mode'='latest-offset',哪个优先级更高
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
3月前
|
缓存 Linux API
深入解析 JMeter TPS 测试:从理论到实践
本文档介绍了如何使用Apache JMeter进行TPS测试。TPS(Transactions Per Second)是衡量系统性能的关键指标,表示每秒处理的事务数。在JMeter中,创建测试计划包括配置线程组、HTTP请求、定时器和监听器。运行测试后,通过聚合报告分析吞吐量、平均响应时间和错误率来计算TPS。当TPS不足时,可优化服务器资源、应用程序代码、数据库查询或引入缓存来提升性能。掌握TPS测试有助于系统性能优化。
153 0
|
缓存 前端开发 JavaScript
如何通过观测云的RUM找到前端加载的瓶颈--可观测性入门篇
网站性能优化既离不开不断演进发展的技术,也离不开前人对技术优化的方法论和具体实践。如何通过观测云的RUM找到加载性能的瓶颈?
88 1
如何通过观测云的RUM找到前端加载的瓶颈--可观测性入门篇
|
Web App开发 存储 JSON
深聊性能测试,从入门到放弃之:Locust性能自动化(七)HAR-files→locustfiles自动转换 :Transformer的使用
深聊性能测试,从入门到放弃之:Locust性能自动化(七)HAR-files→locustfiles自动转换 :Transformer的使用
196 0
深聊性能测试,从入门到放弃之:Locust性能自动化(七)HAR-files→locustfiles自动转换 :Transformer的使用
|
测试技术 Apache
并发测试工具apache benchmark(ab)
并发测试工具apache benchmark(ab)
242 0
|
监控 测试技术 Windows
电商性能测试实战 | JMeter 插件 Ultimate Thread Group 完成梯度递增场景的压测
电商性能测试实战 | JMeter 插件 Ultimate Thread Group 完成梯度递增场景的压测
|
数据可视化 关系型数据库 MySQL
Jmeter与压测相关概念
Jmeter与压测相关概念
224 0
|
测试技术 数据库 数据安全/隐私保护
Jmeter系列(47)- 针对需要登录的接口如何做性能测试?
Jmeter系列(47)- 针对需要登录的接口如何做性能测试?
431 0
Jmeter系列(47)- 针对需要登录的接口如何做性能测试?
性能测试实战 | 修改 JMeter 源码,定制化聚合压测报告
性能和压力测试是每一个互联网应用程序上线之前都必须检验的测试项目。JMeter 作为目前互联网大厂最流行、最强大的性能测试工具,已经成为测试人员行走江湖的必备利器。 相比传统的压力测试工具(如 LoadRunner),JMeter 最显著的特点就是开源、轻量级、易于维护、便于扩展。 面对变化多端的业务情况,测试开发人员可以基于 JMeter 源码修改和二次开发,快速实现定制化功能,更好的满足业务
|
监控 测试技术 Windows
JMeter 插件 Ultimate Thread Group 完成梯度递增场景的压测
前面几篇文章已经介绍完一个电商从注册登录到购物下单的典型场景的 Jmeter压测脚本,具体可参考前期文章:基于电商模式的性能测试(五)-基于Jmeter完成一次日常典型电商场景的压测(下单-支付)。 在实际压测前,我们还需要对场景做适当的调整。 从 ThreadGroup中看,我们的 Thread会在某个时间点同时起多个,而日常场景中我们需要的可能是一个递增的梯度加压的方式。 为了实现梯度