LoadRunner如何在大負載下測試

發表于:2009-09-23來源:作者:點擊數: 標簽:loadrunnerLoadRunnerLoadrunnerloadRunner負載
LoadRunner如何在大負載下測試 軟件測試工具 在大負載中使用LoadRunner進行 負載測試 ,需要配置一些環境來滿足大負載下各種資源的充足: 1.為了避免出現“No Buffer Space Available”的錯誤,需要進行如下配置: 1)修改注冊表: * 設置“HKEY_LOCAL_MACHI

LoadRunner如何在大負載下測試   軟件測試工具

在大負載中使用LoadRunner進行負載測試,需要配置一些環境來滿足大負載下各種資源的充足:

1.為了避免出現“No Buffer Space Available”的錯誤,需要進行如下配置:

1)修改注冊表:

* 設置“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\tcpip\Par
ameters\TcpTimedWaitDelay”為 30
* 設置“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\tcpip\Par
ameters\MaxUserPort”為 65534
* 在“HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session
Manager\Sub Systems\Windows”設置SharedSection 為 4096

2)通過在每個腳本的開頭添加如下函數來設置“SHUTDOWN”模式為"ABRUPT"

web_set_sockets_option(“SHUTDOWN_MODE”,”ABRUPT”)

2.關閉所有的殺毒,反間諜掃描軟件等。同時也關閉任務掃描和所有不需要的服務。

3.腳本運行時設置:

1)設置日志為“只在錯誤發生時發送信息”

2)去掉錯誤時產生snapshot的選項

3)在miscellaneous上,去掉 定義每一步為一個事務 的選項

4)不選擇 模擬瀏覽器緩存,選上“simulate new user on each iteration”和它的子選項

4.如果下載的頁沒有資源,在web_url函數中添加“Mode=HTTP”,這樣會減少LG上的負載(不用轉換成HTML)。默認情況下,web_url的Mode為Mode=HTML

5.重啟LG并且確保他們都能跟Controller連接.

6.確保LG和控制器上有足夠的剩余磁盤空間.

7.在controller中去掉web page breakdown

8.限制Vuser在所有LG上同時進行初始化的數目.可以在Controller的Tools > Options > Run-Time Settings中進行修改.每個LG都有這個設置.

9.限制controller在運行時存儲的錯誤數.通過修改wlrun.ini中的[output]項來實現:

• FlagLimitOutputMessages=1
• MaxNumberOfOutputMessages=<errors count> (default is 10,000)

10.在Controller上修改Monitor的采樣率來降低CPU的使用.可以在Controlller的Tools > Options > Monitors 下修改,如下圖所示:



11. 如果有很多錯誤產生,最好不要經常打開Error/Output窗口,因為這樣會因為訪問數據庫而打開另外的數據庫連接.

12.負載測試中不要使用"Show Vuser"選項.

13.把輸出信息重定向到一個文本文件中來代替輸出到mdb文件中.可以在wlrun7.ini中修改[output]下的

ExportMessageToFile=1來實現.

14.不要在Controller機器上運行虛擬用戶.

15.在場景中設置監視器:

* 內存使用上 mmdrv進程的private bytes

* disk使用

* CPU使用

* 網絡使用

16.把腳本中所與打印信息的腳本去掉.如下面的代碼每次迭代都會調用一次,對大量并發用戶的運行產生負面的影響.

lr_vuser_status_message("pIteration: %s -
START Action", lr__string("{pIteration}"));
lr_output_message("pIteration: %s - START Action", lr__string("{pIteration}"));

Controller處理所有虛擬用戶的信息,這樣會大大降低Controller的性能. 如下是類似的代碼:

web_reg_find("Text=Time on Server", "SaveCount=cErr", ..);
web_url( some url …);
if (atoi(lr__string("{cErr}"))>0) {
lr_error_message(some message);
lr_end_transaction("S05_T01_Request_Content_Page", LR_FAIL);
}

通常認為在腳本中插入lr_error_message是不好的,除非是調用的客戶化的API失敗了才有必要插入該語句.如果是LoadRunner的函數調用失敗(如上面的web_url調用),它會自動發送一個錯誤消息.

在大量用戶運行的情況下,控制Controller和LG之間的通信流量是非常重要的.發送多余的信息(錯誤,輸出等信息)會增大通信流量降低負載能力.所以,通常都需要把代碼中不必要的信息去掉.

17.去掉腳本中所有的sleep()的調用,用lr_think_time()來代替.lr_think_time給LR讓出控制,即LR能夠在Vuser休眠的時候去做其他有用的事情.

18.不要去掉lr_think_time:使用該函數能更準確的模擬負載,對LG產生相對小的壓力

19.web_reg_save_param和web_reg_find()函數:

• 在 web_reg_save_param() 中添加“Notfound=empty” 參數.
• 在 web_reg_find() 添加 "Savecount=some_parameter_name". 如果你想知道它是否成功可以使用atoi(lr__string("{some_paramater_name }"))來衡量.

20.其他

可能會出現的問題:

* 測試產生了太多的錯誤:

錯誤引擎不能處理多于1.5GB的錯誤

如果測試過程中每秒產生多與1000個錯誤,Controller的行為將不可預測

* 測試產生了大量的在線數據

上面的兩個問題都可以使用如下的方法解決:

例如: 場景是一個組有1000個虛擬用戶

可以把這個組分成兩個組:

G1 100 Vusers
G2 900 Vusers

這兩個組可以跟原始的組產生一樣的負載,對于G2在組命令行中添加如下參數:

-disable_data -disable_messages

_disable_data : 讓這個組不發送任信息,不發送任何online信息,不寫任何offline信息.

_disable_message: 讓這個組不給Controller發送任何信息(錯誤,日志)

注意:使用上面的命令行選項會使該LG不給congtroller發送online和offline信息.這樣這個組上的虛擬用戶的分析數據就收集不到了.

21.如果需要遠程訪問,Mercury僅支持PC anywhere.

翻譯自<LoadRunner Large Load Test Considerations>

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97