基本公式
QPS | 每秒完成请求的个数 |
---|---|
time | 每个请求响应完成平均需要时间 |
线程数 = QPS * time;QPS * time就是所有请求完成响应所需要的总时长,如果需要在1s完成所有请求的响应,所以线程数需要等于总时间值。
QPS认知
误区
在Jmeter压测中,通常会认为1s内100的并发量(即:QPS为100) 1.png此时没有添加额外的控制器;上述参数解释:
Number of Threads(users):启用的并发线程个数
Ramp-Up Period(in seconds):在多少秒内把上述线程启动起来
Loop Count:控制循环次数
说明:
一个常见的误解,认为Number of Threads(users)设置为100,Ramp-Up Reriod(in seconds)设置为1,就是每秒发起100个请求(<font color=red>错误</font>);上述的设置表示在1s内启动100个线程,之后jmeter便以最大限度的100个并发进行压测,不能保证1s内只有100个请求。发现:
解决方法
添加定时器Constant Throughput Timer(常数吞吐量定时器),该定时器可以方便的控制发送请求的吞吐量。
3.jpg arget throughput(in samples per minute):设置的值为6000(由于单位是一分钟,如果要求QPS为100,则该值设置为60*100=6000) 之后我们再看结果就会发现每秒的线程数已经稳定了, 至于固定请求发送100个请求的配置, 如果有人知道, 还希望告知, 这里不甚感谢。 4.jpg定时器(Constant Throughput Timer(常数吞吐量定时器))
jmeter提供了很多元件,帮助我们更好的完成各种场景的性能测试,其中,定时器(timer)是很重要的一个元件,jemter提供了9种定时器,这里咱们只讲解Constant Throughput Timer(常数吞吐量定时器)
添加方式
右键Thread Group / Http Request add Timer Constant Throughput Timer
定时器的作用域
- 定时器是在每个sampler(采样器)之前执行, 而不是之后(无论定时器在sampler之前还是之后);
- 当执行一个sampler之前时, 所有当前作用域内的定时器都会被执行;
- 如果希望定时器仅应用于其中一个sampler中,则把定时器作为子节点加入;
Constant Throughput Timer(常数吞吐量定时器)
Target throughput(in samples per minute):目标吞吐量。注意这里是每分钟发送的请求数,因此,对应测试需求中所要求的20 QPS ,这里的值应该是1200 即 20 * 60;
Calculate Throughput based on:有5个选项,分别是
This thread only:控制每个线程的吞吐量,选择这种模式时,总的吞吐量为设置的 target Throughput 乘以矣线程的数量;
All active threads:设置的target Throughput 将分配在每个活跃线程上,每个活跃线程在上一次运行结束后等待合理的时间后再次运行。活跃线程指同一时刻同时运行的线程
All active threads in current thread group:设置的target Throughput将分配在当前线程组的每一个活跃线程上,当测试计划中只有一个线程组时,该选项和All active threads选项的效果完全相同
All active threads (shared ):与All active threads 的选项基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程上一次运行结束后等待合理的时间后再次运行
All cative threads in current thread group (shared ):与All active threads in current thread group 基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程的上一次运行结束后等待合理的时间后再次运行
网友评论