jmeter里有个对线程组的设置,如图

详细的含义就不再这里解释了,如果有需要可以自行搜索每个字段的含义。我设置的是1s内创建10个线程,循环10次。如果启动这个脚本,那么jmeter会在启动后以每1/10s创建一个线程,线程创建后就开始自己循环发送请求,举例说明jmeter在启动后第一个创建的是线程1-1,在1-1创建成功后会马上循环发送10次请求,这里就可能会出现线程1-1在循环的过程中其余线程刚创建好刚循环发请求,以上猜想的依据来自jmeter的“用表格查看结果”和日志的数据记录。如下图

数据来源于jmeter的用表格查看结果,展示了该线程组下10个线程创建的顺序以及线程下请求的顺序,以第一个创建好的线程1-1为例,这里我设置的是登录接口只执行一次,报警记录查询接口循环10次,可以看到报警记录接口在循环了4次之后,线程1-2就创建好开始发请求了,但由于报警记录还有6次循环还在执行所以就会和线程1-2发送的请求并行执行互不影响,按照实际请求顺序显示在表格。这里在执行线程1-1和线程1-2下的请求时线程1-3也创建好了。而为什么在执行4次线程1-1的时候线程1-2就创建好了,我想大概和1s内创建好10个线程的原理有关系吧,平均1/10s也就是0.1s(100ms)创建好一个,而线程1-1的那四个请求的响应时间加起来是86s,而第五次循环请求时间为22s,86+22>108s >100ms,所以按照顺序线程1-2确实应该在第五次循环请求前创建好。

日志数据如下图,可以证明jmeter确实是每100ms创建一个线程

 那么猜测了这个循环次数和并发机制就可以作用于平时公司的一些压力测试项目,比如10000台设备1s能够发送1000条数据请求,模拟这个场景5分钟,(假设一个设备最小发送间隔为1s),那么我们就可以知道是同时有1000个设备1s内发送了1000次请求,而线程创建也需要时间甚至会影响正常的请求响应,所以我们在不影响jmeter性能的条件下尽量最短的时间创建完所有线程。比如0s创建完或者1s创建完。当然有别的需求的除外,比如循环一次,10个线程希望每2s一个线程创建好。

推荐文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。