一、压测误区
1.在线程组中设置了线程数、启动时间、循环时间就以为可以完成并发,其实不然
2.如下述说明:
二、解决办法
1.参考了一些博客,在线程组中添加常数吞吐量定时器Constant Throughput Timer即可解决问题
2.以下为常数吞吐量定时器Constant Throughput Timer使用说明:转载自 https://blog.csdn.net/shuimengzhen/article/details/57075437
********************************************************************分割线********************************************************************************
默认情况下,Jmeter线程在发送请求之间没有间歇。建议为线程组添加某种定时器,以便设定请求之间应该隔多长时间。
如果测试人员不设定这种延迟,Jmeter可能会在短时间内产生大量访问请求,导致服务器被大量请求所淹没。
定时器会让作用域内的每一个采样器都在执行前等待一个固定时长.
如果测试人员为线程组添加了多个定时器,那么Jmeter会将这些定时器的时长叠加起来,共同影响作用域范围内的采样器。
定时器可以作为采样器或者逻辑控制器的子项,目的是只影响作用域内的采样器。
(一)Constant Throughput Timer(常数吞吐量定时器)
Constant Throughput Timer常数吞吐量定时器可以让JMeter以指定数字的吞吐量(即指定TPS,只是这里要求指定每分钟的执行数,而不是每秒)执行。
吞吐量计算的范围可以为指定为当前线程、当前线程组、所有线程组,并且计算吞吐量的依据可以是最近一次线程的执行时延。
1、 名称:定时器Constant Throughput Timer的描述性名称,显示在左边节点上,并用于命名事务
2、注释:定时器Constant Throughput Timer注释信息,非必填项
3、Delay before each affected samler
1)Target throughput(in samples per minute):每分钟的天吐量
2) Calculate Throughput based on:有5个选项:
This thread only:控制每个线程的吞吐量,选择这种模式时,总的吞吐量为设置的target Throughput 乘以该线程的数量
All active threads:设置的target Throughput 将分配在每个活跃线程上,每个活跃线程在上一次运行结束后等待合理的时间后再次运行。活跃线程指同一时刻同时运行的线程。
All avtive threads(shared):与All active threads的选项基本相同。唯一区别是,每个活跃线程都会在所有活跃线程上一次运行结束后等待合理的时间后再次运行。
All active threads in current thread group:设置的target Throughput 将分配在当前线程组的每一个活跃线程上,当测试计划中只有一个线程组时,该选项和All active threads 选项的效果完全相同。
All active threads in current thread group(shared):与All active threads in current thread group 基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程的上一次运行结束后等待合理的时间后再次运行。
原文地址:https://www.cnblogs.com/eagleking/p/10914367.html