1、这里的20 QPS应该是指Jmeter发送请求的QPS,而不是服务器处理的QPS;–因为假如我们以20 QPS的速度向服务器发送请求,但是服务器每秒最多只能处理8个请求,那么我们无论如何都无法测得服务器在20 QPS的情况下的性能数据;
2、难点在于让Jmeter【稳定地】以20 QPS的速度向服务器发送请求;
处理思路
利用Jmeter的constant throughput timer来设置Jmeter的请求吞吐量,同时检测服务器的响应时间等性能数据;
操作步骤:
1、为线程组添加“constant throughput timer(固定吞吐量定时器)”;如下图:
2、配置constant throughput timer
名称:定时的名称;
Target throughput:目标(期望)吞吐量,注意,这里的吞吐量不是per second,而是每分钟;
既然是测试在20 QPS情况下的系统表现,那么这里我们应该填 20*60=1200;
calculate throughput based on:这是一个下拉框,表示以**为基础来控制Jmeter的请求吞吐量,
我们这里选择All active threads in current thread group;
说明如下:
–This thread only :分别控制每个线程的吞吐量,选择这种模式时,总的吞吐量为设置的 target Throughput 乘以线程的数量。
如果我们这里选择此种模式,然后设定了是10个线程,那么我们前面的Target throughput就应该填写1200/10=120 或 20/10*60=120了;
–All active threads : 设置的target Throughput 将分配在每个活跃线程上,每个活跃线程在上一次运行结束后等待合理的时间后再次运行。活跃线程指同一时刻同时运行的线程。
如果我们这里选择此种模式,然后设定了是10个线程,那么我们前面的Target throughput就应该填写1200/10=120 或 20/10*60=120了;
–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 基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程的上一次运行结束后等待合理的时间后再次运行。
3、配置线程组属性
前面只是配置了QPS,所以我们接着配置,Jmeter持续发送请求的时间,
(1)在线程属性-循环测试处,勾选上“永远”,(此时旁边的editText就无法输入了);
(2)勾选“调度器”,在持续时间中配置10秒,或在启动时间、结束时间处配置一个时间间隔为10秒的时间区间;
4、添加聚合报告、TPS监听器;
(1)我们以20QPS发送10秒,20*10=200个,聚合报告中215个,比较相近,可看为已达到目的;
最后
笔者已经把面试题和答案整理成了面试专题文档
[外链图片转存中…(img-QgjVvAF8-1719277340248)]
[外链图片转存中…(img-ROeO32E2-1719277340248)]
[外链图片转存中…(img-a9Mw9eM4-1719277340249)]