一、背景
在Jmeter进行并发测试的时候,请求有时候并不能按照我们想要的顺序执行。
二、原因
这个是因为多线程会存在竞争。多线程执行并发操作,肯定是谁跑得快谁就先执行,线程才不会进行排队。所以就导致请求的顺序不会按照我们录入的先后来执行。
三、解决方案
使用jmeter自带的一个事物锁控制器:官方把它定义为线程锁控制器(Critical Section Controller),中文翻译是临界部分控制器。
使用了这个控制器,在锁下面的请求,在相同的时间点只会有一个线程去执行它,不会产生竞争。这样子的话,我们把需要按照顺序执行的请求,直接放在这个控制器下面,就可以按照顺序执行了。
四、举个例子
上述截图中,我们调用下单接口之前,是需要先执行预下单接口的,故我们按照顺序把两个请求,放在同一个临界部分控制器下面,那么执行线程组的时候,就可以看到请求是按照预下单,下单的顺序执行了。