一、背景
? 在Jmeter進(jìn)行并發(fā)測試的時(shí)候,請(qǐng)求有時(shí)候并不能按照我們想要的順序執(zhí)行。
二、原因
? 這個(gè)是因?yàn)槎嗑€程會(huì)存在競爭。多線程執(zhí)行并發(fā)操作,肯定是誰跑得快誰就先執(zhí)行,線程才不會(huì)進(jìn)行排隊(duì)。所以就導(dǎo)致請(qǐng)求的順序不會(huì)按照我們錄入的先后來執(zhí)行。
三、解決方案
? 使用jmeter自帶的一個(gè)事物鎖控制器:官方把它定義為線程鎖控制器(Critical Section Controller),中文翻譯是臨界部分控制器。

圖1
? 使用了這個(gè)控制器,在鎖下面的請(qǐng)求,在相同的時(shí)間點(diǎn)只會(huì)有一個(gè)線程去執(zhí)行它,不會(huì)產(chǎn)生競爭。這樣子的話,我們把需要按照順序執(zhí)行的請(qǐng)求,直接放在這個(gè)控制器下面,就可以按照順序執(zhí)行了。
四、舉個(gè)例子

圖2
? 上述截圖中,我們調(diào)用下單接口之前,是需要先執(zhí)行預(yù)下單接口的,故我們按照順序把兩個(gè)請(qǐng)求,放在同一個(gè)臨界部分控制器下面,那么執(zhí)行線程組的時(shí)候,就可以看到請(qǐng)求是按照預(yù)下單,下單的順序執(zhí)行了。
