集合點(diǎn):
簡單來理解一下,雖然我們的“性能測試”理解為“多用戶并發(fā)測試”,但真正的并發(fā)是不存在的,為了更真實(shí)的實(shí)現(xiàn)并發(fā)這感念,我們可以在需要壓力的地方設(shè)置集合點(diǎn),每到輸入用戶名和密碼登錄時(shí),所有的虛擬用戶都相互之間等一等,然后,一起訪問。
注意****:
1.JMeter里面的集合點(diǎn)通過****添加定時(shí)器****來完成。
2.Synchronizing timer僅作用于同一個(gè)JVM中的線程。
集合點(diǎn)
- 啟動(dòng)路徑
2)用法
Number of Simulated Users to Group by:集合多少人后再執(zhí)行請(qǐng)求(也就是執(zhí)行的線程數(shù))
注意:等同于設(shè)置為線程租中的線程數(shù),一定要確保設(shè)置的值不大于它所在線程組包含的用戶數(shù)。
Timeout in milliseconds:指定人數(shù) 多少秒沒集合到算超時(shí)(設(shè)置延遲時(shí)間以毫秒為單位)
注意:如果設(shè)置Timeout in milliseconds為0,表示無超時(shí)時(shí)間,會(huì)一直等下去。
線程數(shù)量無法達(dá)到"Number of Simultaneous Users to Group by"中設(shè)置的值,那么Test將無限等待,除非手動(dòng)終止。
3)如果希望定時(shí)器僅應(yīng)用于其中一個(gè)sampler,則把該定時(shí)器作為子節(jié)點(diǎn)加入,如下圖
定時(shí)器僅僅對(duì)HTTP請(qǐng)求1起作用,即僅在HTTP請(qǐng)求1執(zhí)行前執(zhí)行定時(shí)器,和HTTP請(qǐng)求2無關(guān)。
3)如果你希望synchronizing timer應(yīng)用于多個(gè)sampler.
如下,執(zhí)行HTTP請(qǐng)求1和HTTP請(qǐng)求2前都會(huì)執(zhí)行同步定時(shí)器1、2。當(dāng)執(zhí)行一個(gè)sampler之前時(shí),和sampler處于相同作用域的定時(shí)器都會(huì)被執(zhí)行;
注意點(diǎn):
-----集合點(diǎn)的位置一定要在Sample(采樣器)之前才能生效嗎???”
在Jmeter中,timer是在sampler之前執(zhí)行的。不管這個(gè)定時(shí)器的位置放在sampler之后,還是之前。當(dāng)然,如果有多個(gè)timer的時(shí)候,在相同作用域下,會(huì)按上下順序執(zhí)行timer,這個(gè)就需要慎重放置timer的順序;不過,為了更好的可讀性,還是建議將timer放在對(duì)應(yīng)的sampler前面 或 子節(jié)點(diǎn)中;
- 進(jìn)行必要設(shè)置后,運(yùn)行查看效果,通過結(jié)果樹可以看到,請(qǐng)求是批量執(zhí)行的。
可以觀察開始執(zhí)行的腳本,觀察請(qǐng)求的增加數(shù)量趨勢;或?qū)Ρ日?qǐng)求的發(fā)送時(shí)間.
補(bǔ)充: Synchronizing timer 僅作用于同一個(gè)JVM中的線程。
試想:
a.如果分布式測試時(shí),synchronizing timer作用于所有jvm,那么jvm之間或者說監(jiān)控jvm工作的部件就需要頻繁通訊,確定線程的數(shù)量及狀態(tài)等,然后集結(jié)了足夠的線程后,又要發(fā)送信號(hào)讓Jmeter來發(fā)送測試請(qǐng)求,中間存在延時(shí),這樣就無法模擬更真實(shí)的高并發(fā)了,而且這個(gè)東西還會(huì)消耗測試機(jī)器的一部分性能,會(huì)給測試結(jié)果帶來負(fù)面影響;所以暫時(shí)是只支持控制單個(gè)jvm,如果后面有辦法解決上面那些問題后,就可以實(shí)現(xiàn)控制多個(gè)jvm,控制總并發(fā)量;
b.如果分布式測試,并使用了Synchronizing timer,且設(shè)置的值是小于單個(gè)jvm的線程數(shù)量;但是,較難確保所有jvm都在同一時(shí)間點(diǎn)集結(jié)了同樣數(shù)量的線程數(shù),這樣就很難下測試結(jié)論了,因?yàn)槎疾恢朗嵌嗌俨l(fā)下的性能表現(xiàn);當(dāng)然了,可以將線程的啟用時(shí)間拉長,并將超時(shí)時(shí)間延長,這樣就很可能會(huì)與同一時(shí)刻集結(jié)到足夠的線程,達(dá)到超高并發(fā)的測試;所以,分布式測試與Synchronizing timer一般不是同時(shí)使用的;如果非要用,則需要慎重設(shè)置相關(guān)參數(shù)