【Jmeter】配置不同业务请求比例,应对综合场景压测

背景

在进行综合场景压测时,遇到了如何实现不同的请求所占比例不同的问题。

  • 有人说将这些请求分别放到单独的线程组下,然后将线程组的线程数按照比例进行配置。

这种方法不是很好,因为服务器对不同的请求处理能力不同,有的处理快,有的处理慢。若采取上述方案的话,并不会按照我们预期的比例进行并发。

那么如何真实模拟按比例进行并发呢?此前使用LR进行过类似场景的测试时的思路如下:

  • 每次向服务器发出请求时,先生成一个随机数,我们对随机数的取值划分若干个范围(对应若干个业务请求),然后对随机数进行判断,当随机数落在某个范围内,就可以执行对应的请求。
  • 比如,我们压测的过程中,要访问百度和besttest官网,并且请求比例是2:8,那么可以规定随机数取值1<=random<=100,然后再划分2个范围:当随机数的取值在0到20之间,则访问百度;当随机数取值在20和100之间,则访问besttest官网;根据概率论,当取样量足够大的话,访问百度和besttest官网的请求比例会比较接近2:8。

Jmeter也能这样实现吗?答案是肯定的,下面我们使用Jmeter结合刚才的例子进行分解

Jmeter实现(Random)

首先,我们需要一个能够生成随机数的函数,刚好jmeter提供了这个函数

 在测试计划下,我们右键“添加”——配置原件——Random Variable

 设置随机数的变量名称为num,设置取值范围0到100

添加两个如果(if)控制器,添加控制条件,控制执行请求。

 右键线程组添加“逻辑控制器”——如果(if)控制器

然后在两个控制器下,分别添加1个http请求。

 当随机数num取值在20和100之间;调用获取图形获取验证码;

 添加判断条件,如果当随机数num取值在1和20之间,调用登录接口

 添加聚合报告,查看结果

运行jmeter验证,取值是否按照比例请求,我们设置一个线程数,让其循环100次,结果如下,获取图形获取验证码78次,登录接口22次,基本满足我们想要的比例。

可以预见的是当数据量达到一定程度之后,会无限接近设置的2比8的比例。

Jmeter实现(计数器)

计数器可以通过如下方式添加,其他的实现思路一样

后话:
其实在LR中也可以在场景设计里设置不同的请求的比例来实现。但是本文主要是讨论Jmeter的实现思路,所以在前文中没有提及。

原文地址:https://www.cnblogs.com/ajing2018/p/11405370.html

时间: 2024-07-29 00:52:17

【Jmeter】配置不同业务请求比例,应对综合场景压测的相关文章

【转载】Jmeter业务请求比例1

ps:文章转自订阅号"测试那点事儿",链接:https://mp.weixin.qq.com/s/qVD4iNO0QqRIwAIq9_E_Kw 在进行综合场景压测时,由于不同的请求,要求所占比例不同,那如何实现呢? 有人说将这些请求分别放到单独的线程组下,然后将线程组的线程数按照比例进行配置,这种方法不是很好,想想,不同的请求,服务器对其处理能力不同,有的处理快,有的处理慢.若采取上述方案的话,并不会按照我们预期的比例进行并发. 那么如何真实模拟按比例进行并发呢? 之前在使用LR进行过

jmeter压测实践

技巧一:命令行执行 命令执行:指定参数,报告的存储位置 jmeter -n -t baidu_requests_results.jmx -r -l baidu_requests_results.jtl -e -o /home/resultReport -n : 非GUI 模式执行JMeter -t : 执行测试文件所在的位置及文件名 -r : 远程将所有agent启动用在分布式测试场景下,不是分布式测试只是单点就不需要-r -l : 指定生成测试结果的保存文件, jtl 文件格式 -e : 测试

jmeter命令行模式运行,实时获取压测结果

jmeter命令行模式运行,实时获取压测结果 jmeter很小,很快,使用方便,可以在界面运行,可以命令行运行.简单介绍下命令行运行的方式: sh jmeter.sh -n -t my-script.jmx -R 10.6.5.31,10.6.5.35,10.6.5.36,10.6.5.37,10.6.5.72 -l 8.jtl 上面一条命令应该可以满足大部分需求. -n:使用命令行模式运行 -t:指定要运行的jmx脚本 -R:指定使用那些slave节点压测 -l:压测记录保存在哪里 使用-R指

Java秒杀实战 (四)JMeter压测

转自:https://blog.csdn.net/qq_41305266/article/details/81071278. 一.JMeter入门 下载链接 http://jmeter.apache.org/download_jmeter.cgi 添加线程组 设置http请求默认值 添加待压测的http请求 添加聚合报告监听器 启动测试 1000个线程,循环10次,即10000个请求 二.redis 压测 1. redis-benchmark -h 127.0.0.1 -p 6379  -c 1

Jmeter配置元件-Http默认请求值

   该组件可以为我们的http请求设置默认的值.假如,我们创建一个测试计划有很多个请求且都是发送到相同的server,这时我们只需添加一个 Http request defaults组件并设置"Server Name or IP",然后添加多个http请求且不设置"server name or ip",这些http请求会默认使用Http request defaults组件设置的值.   位置:配置元件->HTTP请求默认值 在说下默认请求的作用域,可以设置

jmeter实现一次登录,多次业务请求

实现目的 很多时候,在进行性能测试时,需要先登录,然后再对需求的事务进行相关性能测试,此时的登录操作,并不在本次性能测试的范围内,所以我们只需要登录一次,然后获取登录成功后的cookie等,并将cookie等鉴权的值,传给cookie管理器,供后续所有的业务请求使用,这样即可实现直接对需求的事务进行性能测试,并监控相关资源利用和程序性能指标. 脚本实现 设置Http Cookie管理器,用于存储当前脚本的cookie信息,并传给后续的相关请求使用 设置高斯随机定时器,用于产生随机等待时间 设置初

你想建设一个能承受500万PV/每天的网站吗?服务器每秒要处理多少个请求才能应对?

你想建设一个能承受500万PV/每天的网站吗?服务器每秒要处理多少个请求才能应对? 你想建设一个能承受500万PV/每天的网站吗? 500万PV是什么概念?服务器每秒要处理多少个请求才能应对?如果计算呢? PV是什么: PV是page view的简写.PV是指页面的访问次数,每打开或刷新一次页面,就算做一个pv. 计算模型:  每台服务器每秒处理请求的数量=((80%*总PV量)/(24小时*60分*60秒*40%)) / 服务器数量 .其中关键的参数是80%.40%.表示一天中有80%的请求发

Jmeter配置元件——JDBC Connection Configuration参数化

在昨天Jmeter配置元件——CSV DataSet Config参数化一文中,有提到,在参数化时,还可以使用JDBC Connection Configuration配置元件实现,具体如何实现,如何操作,且听详解. jar包下载 在Jmeter 中想用到连接数据库的功能,必须下载jar包,下载地址. 下载好了jar包,如何使用呢?使用方式有二. 其一:下载的jar包保存在非Jmeter的lib下的ext目录下,则需要在Jmeter工程中测试计划元件下指定jar包路径,如下图所示: 其二:下载的

性能测试十一:jmeter进阶之java请求

使用Java编写JDBC脚本对Mysql进行增删改查等操作的性能测试 使用Jmeter提供的脚本框架依赖的jar包(分别在jmeter目录下的lib和ext目录下) ApacheJMeter_core.jar ApacheJMeter_java.jar avalon-framework-4.1.4.jar jorphan.jar logkit-2.0.jar 若为4.+以上的jmeter还需加两个 slf4j-api-的.jar包 脚本调试好后,导出为jar包,放在apache-jmeter-3