http://wenku.baidu.com/link?url=2wZd7nx0zyPtDOsOEyVFnw4sEiKLvyHLnkNDz9HlOlRzZWEkCDhODdmNGebFrv5oVKj9rpS7Flg5qhXov-wbHghRtQWdIqKcX-0oRe7_7sG
1.集合點的含義 rendezvous
當通過controller虛擬多個用戶執行該腳本時。用戶的啟動或運行步驟不一定都是同步的。集合點是在腳本的某處設置一個標記。當有虛擬用戶運行到這個標記處時,停下等待,直到所有的用戶都達到這個標記處時,再一同進行下面的步驟,這樣能夠用最大的用戶并發去做下面的操作,就像集合再前進一樣。集合點之名由此而得。集合點主要用于對關鍵步驟的加壓。
2.插入集合點的目的
集合點的用處對于LoadRunner來說意義非常大,它可以設置多個虛擬用戶等待到一個點,同時觸發一個事務,以達到模擬真實環境下同時多個用戶操作,同時模擬負載,實現性能測試的最終目的。由此可見,插入集合點主要是為了衡量在加重負載的情況下服務器的性能情況,從而找到性能瓶頸。可以把集合點理解成是一種特殊情況下的并發。
舉例如下:在客戶的需求中,可能會要求系統能夠承受500人同時提交數據。在LR中可以通過在提交數據操作前面加入集合點,當虛擬用戶運行到提交數據的集合點時,LR就會檢查同時有多少用戶運行到集合點,如果我們設定腳本運行的虛擬用戶數為1000,等到這1000個虛擬用戶都運行到集合點后,就會觸發同時進行提交數據的操作,從而能夠測試系統能夠對于這1000個用戶提交數據的響應情況,以此來看系統是否滿足客戶的該點需求。
事務:就是用戶某一步或者某幾步操作的集合。當我們需要通過某一步或是某幾步操作從而衡量服務器的性能的時候,這時我們就把這些操作設置成一個事務,當事務開始執行的時候lr就開始計時當事務運行結束計時停止,執行事務的時間會在在最后的結果中顯示出來。
集合點一般是跟事務結合使用的,不要把集合點設置到事物里面,因為那樣的話腳本等待的時間都計算在事務的時間內,進行壓力測試的時候查看響應時間就會有一定的偏差。集合點應插入到事務開始的前面,這樣在這個地方達到用戶的數量后同時執行下面的事務才能測試出多個用戶能否同時執行某一操作。
實例:在測試查詢編號這個功能,需要在點擊查詢時設置事務跟集合點
方法一:先設置集合點再設置事務,壓20個用戶時平均響應時間為16.400
方法二:先設置事務再設置集合點,壓20個用戶時平均響應時間為0.799
在腳本中直接添加:
lr_rendezvous("集合點名稱");
如果腳本中設置了集合點,在conntrol的場景中Scenario/Rendezvous集合功能點會亮(沒有則是灰色)。就可以來設置虛擬用戶集合的方式。
如果腳本之前沒有集合點,后面加進去的,已經加載在場景了要進行刷新,獲取最新腳本。
Controller的Scenario Groups中,有個按鈕Details,進去之后會有Refresh按鈕,有刷新腳本和運行設置兩項
集合點設置策略Policy:總共有3種
1.當百分之多少的用戶到達集合點時腳本繼續。
2.當百分之多少的運行用戶到達集合點時腳本繼續。
3.多少個用戶到達集合點時腳本繼續。
說明:其中1跟2兩種只針對設置了多少分鐘啟動多少用戶,如果一開始就加載所有用戶就沒有什么區別
這3個策略的區別在于:假設腳本由100個用戶來運行,但100個用戶并不是一開始就共同運行的。假設每隔1分鐘添加10個用戶,也就是說10分鐘后系統才有100個在線用戶。這里100就是指系統訪問的所有用戶數,而不同時間的在線用戶數是不同的。設置的集合點策略百分比均為100%。在場景運行時,當Vuser腳本運行到集合點函數時,該虛擬用戶會進入集合點狀態直到集合點策略滿足后才釋放。策略1是指當全部用戶都運行到了集合點函數才釋放集合,讓這100個用戶并發運行后面的腳本。策略2是指當前時間如果只有10個用戶在線,那么只需要這10個用戶都運行到了集合點函數就釋放集合,讓這10個用戶并發運行后面的腳本。策略3就比較好理解了,當到達集合點的用戶數達到自己設置的數量后就釋放等待,并發運行后面的腳本。可以在多個腳本上設置相同的集合點名稱來實現多個腳本同時并發的效果。
設置集合點策略時還有一個集合點超時在腳本運行時,每個虛擬用戶到達集合點時都會去檢查一下集合點的策略設置,如果不滿足,那么就在集合狀態等待,直到集合點策略滿足后,才運行下一步操作。但是可能存在前一個虛擬用戶和后一個虛擬用戶達到集合點的時間間隔非常長的情況,所以需要指定一個超時的時間,如果超過這個時間就不等待遲到的虛擬用戶了。
超時時間是指虛擬用戶之間的時間差,當出現兩個虛擬用戶到達集合點的時間差超過設定的超時時間時,所有在集合點處于等待狀態中的用戶將全部釋放。