在loadrunner的虛擬用戶中,術語concurrent(並發)和simultaneous(同時)存在一些區別,concurrent 是指虛擬場景中參於運行的虛擬用戶。
而simultaneous與集合點(rendzvous point)關系更密切,是指在同一時刻一起執行某個任務的虛擬用戶。
1、下面以登錄腳本為例,進行演示:
Action() { //添加集合點,場景中如果想使用集合點策略,腳本中必須要添加集合點 lr_rendezvous("登錄集合點"); //添加登錄事務 lr_start_transaction("登錄"); //登錄 web_custom_request("login", "URL=http://********:8080/mobile/api/user/login ", "Method=POST", "TargetFrame=", "Resource=1", "Referer=", "Mode=HTTP", "EncType=application/json ", "Body={\"mobile\":\"131********\",\"password\":\"123456\"}", LAST); lr_end_transaction("登錄", LR_AUTO); return 0; }
2、打開Controller,設置虛擬用戶數10個:
3、點擊菜單中的“scenario”的選項菜單。
4、下拉菜單中選擇“rendezvous”的選項即可。
5、我們可以看到Vusers 列表框里有10個集合點(1~10),這里的數量和我們設置的虛擬用戶數一致。
可以點擊選中某個集合點,點擊“Disable VUser” 按鈕,使其不參與集合點。
6、點擊“Policy...”來設置集合點的策略:
下面來看看這三種策略的含義:
1)、Release when :當所有虛擬用戶中的x % 到達集合點進釋放,即僅當指定百分比的虛擬用戶到達集合點時,才釋放虛擬用戶。
注意:此選項將會干擾場景的計划。如果選擇此選項,場景將不按計划運行。
例如:場景設置如下,10個用戶,每30秒啟動2個用戶:
集合點策略如下設置:
運行場景如下:
剛開始啟動2個用戶
當用戶數為4個時,開始運行
當集合點不足4個時,就等待:
2)、Release when :當所有正在運行的虛擬用戶中的x %到達集合點時釋放,即僅當場景中指定百分比的、正在運行的虛擬用戶到達集合點時,才釋放虛擬用戶。
還有不在運行的虛擬用戶? 假如,設置為1分鍾啟動一個用戶,當然會存在因為用戶還沒啟動,所以無法參與集合點。
場景設置如下:
集合點設置策略為:
剛開始啟動4個用戶:
集合點不足50%時,就等待:
3)、Release when : 當x 個虛擬用戶到達集合點時釋放,即僅當指定數量的虛擬用戶到達集合點時,才釋放虛擬用戶。
這個很好理解,當我用百分比不太好衡量集合點的虛擬用戶數,當然可以設置具體的用戶數。
場景設置如下:
集合點策略設置如下:
場景運行中的截圖:
初始化4個用戶,都到達集合點
等待第六個用戶到達集合點
4)、Timeout between Vusers (虛擬用戶之間的超時)框中輸入一個超時值。
假如設置了集合10用戶並發,結果9個用戶已經集合到位,還剩1個虛擬用戶,左等右等就是等不來。那總不能一直等下去吧。設定了個時間,假如30秒還不來,那就不管它了。
超時的時長默認是30秒,我們可以根據具體的被測應用進行調整。
說明:
實際工作中,除了測試秒殺和模擬瞬間的並發,其他情況下用集合點的很少。
補充:
如果一台負載機不足時,還可以添加多台,只需在其他服務器上安裝loadrunner的Controller即可,添加方式如下:
點擊Add后,輸入一下信息即可添加成功:
添加完成后,就可選擇了。
部分文字摘自蟲師博客(http://www.cnblogs.com/fnng/archive/2013/03/04/2943513.html),感謝!