Jmeter之集合點


集合點:

  雖然我們對性能測試理解為多用戶並發測試,但真正做到完全的並發是不存在的,為了更真實的實現並發這概念,我們可以在需要壓力的地方設置集合點,等到所有用戶都准備好時,一起發送請求。

  Jmeter中的集合點通過添加定時器中的Synchronizing Timer來完成

1、添加Synchronizing Timer

2、用法

Number of Simulated Users to Group by:集合多少用戶(也就是多少線程數)。該值應該小於等於現出組中的線程數。

Timeout in milliseconds :集合超時時間,多長時間集合完成。該值如果設為0,就相當於沒有超時時間,沒到設定的用戶數,會一直等下去。

3、Synchronizing Timer應用與單個請求

如果希望集合點只應用於其中一個請求,則應該把Synchronizing Timer作為子節點加入,如下圖:

集合點僅僅對HTTP請求1起作用,僅在HTTP請求1執行前執行集合點,和HTTP請求2無關

4、Synchronizing Timer應用於多個請求

執行HTTP請求1和HTTP請求2前都會執行同步Synchronizing Timer 1和Synchronizing Timer 2。當執行HTTP請求1之前,和HTTP請求1處於相同作用域的Synchronizing Timer 2都會被執行

注意:

   在Jmeter中,Synchronizing Timer是在請求之前執行的。不管這個它的位置放在請求之后還是之前。當然,如果有多個Synchronizing Timer的時候,在相同作用域下,會按上下順序執行Synchronizing Timer,這個就需要慎重放置Synchronizing Timer的順序。不過,為了更好的可讀性,還是建議將Synchronizing Timer放在對應的請求前面或子節點中。

5、查看運行結果

通過結果樹可以看到,請求是批量執行的。觀察開始執行的腳本,觀察請求的增加數量趨勢;或對比請求的發送時間。

6、Synchronizing timer 僅作用於同一個JVM中的線程

  分布式測試時,如果synchronizing timer作用於所有jvm,那么jvm之間或者說監控jvm工作的部件就需要頻繁通訊,確定線程的數量及狀態等,然后集結了足夠的線程后,又要發送信號讓Jmeter來發送測試請求,中間存在延時,這樣就無法模擬更真實的高並發了,而且這個東西還會消耗測試機器的一部分性能,會給測試結果帶來負面影響。所以暫時是只支持控制單個jvm,如果后面有辦法解決上面那些問題后,就可以實現控制多個jvm,控制總並發量。

  分布式測試時,如果使用了Synchronizing timer,且設置的值是小於單個jvm的線程數量。但是,較難確保所有jvm都在同一時間點集結了同樣數量的線程數,這樣就很難下測試結論了,因為都不知道是多少並發下的性能表現;當然了,可以將線程的啟用時間拉長,並將超時時間延長,這樣就很可能會與同一時刻集結到足夠的線程,達到超高並發的測試。所以,分布式測試與Synchronizing timer一般不是同時使用的,如果非要用,則需要慎重設置相關參數。

  在實際的性能測試中,我們都較少使用集合點這一操作,因為即使設置了集合點,所有用戶同時發送請求,服務器接收到請求的時間也不可能完全相同。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM