集合點(diǎn):
簡單來理解一下攘须,雖然我們的“性能測試”理解為“多用戶并發(fā)測試”液样,但真正的并發(fā)是不存在的键兜,為了更真實(shí)的實(shí)現(xiàn)并發(fā)這感念秧饮,我們可以在需要壓力的地方設(shè)置集合點(diǎn)映挂,每到輸入用戶名和密碼登錄時,所有的虛擬用戶都相互之間等一等盗尸,然后柑船,一起訪問。
注意:
1.JMeter里面的集合點(diǎn)通過添加定時器來完成泼各。
2.Synchronizing timer僅作用于同一個JVM中的線程鞍时。
集合點(diǎn)
1) 啟動路徑
2)用法
Number of Simulated Users to Group by:集合多少人后再執(zhí)行請求(也就是執(zhí)行的線程數(shù))
注意:等同于設(shè)置為線程租中的線程數(shù),一定要確保設(shè)置的值不大于它所在線程組包含的用戶數(shù)扣蜻。
Timeout in milliseconds:指定人數(shù) 多少秒沒集合到算超時(設(shè)置延遲時間以毫秒為單位)
注意:如果設(shè)置Timeout in milliseconds為0逆巍,表示無超時時間,會一直等下去莽使。
線程數(shù)量無法達(dá)到"Number of Simultaneous Users to Group by"中設(shè)置的值锐极,那么Test將無限等待,除非手動終止芳肌。
3)如果希望定時器僅應(yīng)用于其中一個sampler灵再,則把該定時器作為子節(jié)點(diǎn)加入,如下圖
定時器僅僅對HTTP請求1起作用庇勃,即僅在HTTP請求1執(zhí)行前執(zhí)行定時器檬嘀,和HTTP請求2無關(guān)槽驶。
3)如果你希望synchronizing timer應(yīng)用于多個sampler.
如下责嚷,執(zhí)行HTTP請求1和HTTP請求2前都會執(zhí)行同步定時器1、2掂铐。當(dāng)執(zhí)行一個sampler之前時罕拂,和sampler處于相同作用域的定時器都會被執(zhí)行;
注意點(diǎn):
-----集合點(diǎn)的位置一定要在Sample(采樣器)之前才能生效嗎???”
在Jmeter中全陨,timer是在sampler之前執(zhí)行的爆班。不管這個定時器的位置放在sampler之后,還是之前辱姨。當(dāng)然柿菩,如果有多個timer的時候,在相同作用域下雨涛,會按上下順序執(zhí)行timer枢舶,這個就需要慎重放置timer的順序懦胞;不過,為了更好的可讀性凉泄,還是建議將timer放在對應(yīng)的sampler前面 或 子節(jié)點(diǎn)中躏尉;
5) 進(jìn)行必要設(shè)置后,運(yùn)行查看效果后众,通過結(jié)果樹可以看到胀糜,請求是批量執(zhí)行的。
可以觀察開始執(zhí)行的腳本蒂誉,觀察請求的增加數(shù)量趨勢教藻;或?qū)Ρ日埱蟮陌l(fā)送時間.
補(bǔ)充: ? Synchronizing timer 僅作用于同一個JVM中的線程。
試想:
a.如果分布式測試時右锨,synchronizing timer作用于所有jvm怖竭,那么jvm之間或者說監(jiān)控jvm工作的部件就需要頻繁通訊,確定線程的數(shù)量及狀態(tài)等陡蝇,然后集結(jié)了足夠的線程后痊臭,又要發(fā)送信號讓Jmeter來發(fā)送測試請求,中間存在延時登夫,這樣就無法模擬更真實(shí)的高并發(fā)了广匙,而且這個東西還會消耗測試機(jī)器的一部分性能,會給測試結(jié)果帶來負(fù)面影響恼策;所以暫時是只支持控制單個jvm鸦致,如果后面有辦法解決上面那些問題后,就可以實(shí)現(xiàn)控制多個jvm涣楷,控制總并發(fā)量分唾;
b.如果分布式測試,并使用了Synchronizing timer狮斗,且設(shè)置的值是小于單個jvm的線程數(shù)量绽乔;但是,較難確保所有jvm都在同一時間點(diǎn)集結(jié)了同樣數(shù)量的線程數(shù)碳褒,這樣就很難下測試結(jié)論了折砸,因?yàn)槎疾恢朗嵌嗌俨l(fā)下的性能表現(xiàn);當(dāng)然了沙峻,可以將線程的啟用時間拉長睦授,并將超時時間延長,這樣就很可能會與同一時刻集結(jié)到足夠的線程摔寨,達(dá)到超高并發(fā)的測試去枷;所以,分布式測試與Synchronizing timer一般不是同時使用的;如果非要用删顶,則需要慎重設(shè)置相關(guān)參數(shù)疗隶。