LoadRunner如何在大负载下测试
上一篇 / 下一篇 2008-06-10 14:36:10 / 个人分类:性能测试
|7_T*cn ?$A0 在大负载中使用LoadRunner进行负载测试,需要配置一些环境来满足大负载下各种资源的充足:
$_a?+k2@0t)t!eyD01.为了避免出现“No Buffer Space Available”的错误,需要进行如下配置:
CkO7{(E)g8M6?0(L JW(QU:C6k,[Z-sA0 1)修改注册表:
L7x%H2](N0_)NN Dk q,Y0 * 设置“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\tcpip\Par
'r
U}Lv)m4B0ameters\TcpTimedWaitDelay”为 30
5PDS
DD u(h?J
a0 * 设置“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\tcpip\Par
gR{2j^R-Kp3S0ameters\MaxUserPort”为 6553451Testing软件测试网2H[ YXgG-Y QD#k
* 在“HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session51Testing软件测试网k.bL|:Me/T
Manager\Sub Systems\Windows”设置SharedSection 为 4096
MlAUX P0 2)通过在每个脚本的开头添加如下函数来设置“SHUTDOWN”模式为"ABRUPT"51Testing软件测试网\0`,k8z6x9`^;^
51Testing软件测试网;Y$F(]'`1L6hr$i@web_set_sockets_option(“SHUTDOWN_MODE”,”ABRUPT”)
M} lW7{t/T4Kq9R0!D5O:m"W*I"J%rek;I0p0 2.关闭所有的杀毒,反间谍扫描软件等。同时也关闭任务扫描和所有不需要的服务。51Testing软件测试网([ U)j5Z3C:eJ
51Testing软件测试网*kc.~T;Zm?'bq2s3.脚本运行时设置:51Testing软件测试网&O6P"D+^u X
$RS2cN:{i7NH]0 1)设置日志为“只在错误发生时发送信息”
fY$[@P-N(}051Testing软件测试网7B2?0B`7DV3~2)去掉错误时产生snapshot的选项
A(Q)~(ap/t4~vd5?0`A#]fP W0 3)在miscellaneous上,去掉 定义每一步为一个事务 的选项51Testing软件测试网a2eY_1E S1Y$j
51Testing软件测试网6MPv'^_9_JF4)不选择 模拟浏览器缓存,选上“simulate new user on each iteration”和它的子选项
Z t.og+e*ezm*^051Testing软件测试网5Cnjfr6K4.如果下载的页没有资源,在web_url函数中添加“Mode=HTTP”,这样会减少LG上的负载(不用转换成HTML)。默认情况下,web_url的Mode为Mode=HTML51Testing软件测试网z vz'{2}"k'xEO
E;VzC.O"}0 5.重启LG并且确保他们都能跟Controller连接.51Testing软件测试网J:\$|xRR,_]C
0E${b l;` _0 6.确保LG和控制器上有足够的剩余磁盘空间.
j%Qts%R h0A~'V+|*W0 7.在controller中去掉web page breakdown51Testing软件测试网$TSY5g9Q
#{#E VHLN6vI"~;YH*E8G0 8.限制Vuser在所有LG上同时进行初始化的数目.可以在Controller的Tools > Options > Run-Time Settings中进行修改.每个LG都有这个设置.51Testing软件测试网m3G s,~bp7d!w
51Testing软件测试网 ?-UP#YQ7j @8qNduaJ Bo9.限制controller在运行时存储的错误数.通过修改wlrun.ini中的[output]项来实现:51Testing软件测试网5|ouW[{XWQ
K#R9FJJJ1F OV(z0 • FlagLimitOutputMessages=151Testing软件测试网8WY/e f%|,to.` c
• MaxNumberOfOutputMessages=<errors count> (default is 10,000)
10.在Controller上修改Monitor的采样率来降低CPU的使用.可以在Controlller的Tools > Options > Monitors 下修改,如下图所示:51Testing软件测试网+}r(J0I'P)@a)t,M
51Testing软件测试网4r!LBZ%ll}Z"s^+W*aZ+[h2M5y051Testing软件测试网 S.yG/Bi0m'Y+DjY11. 如果有很多错误产生,最好不要经常打开Error/Output窗口,因为这样会因为访问数据库而打开另外的数据库连接.
Gl$BNd)D~051Testing软件测试网vcB;b-Ng X'O12.负载测试中不要使用"Show Vuser"选项.
K |)@6D:SA9Lb07W#f/kVM013.把输出信息重定向到一个文本文件中来代替输出到mdb文件中.可以在wlrun7.ini中修改[output]下的
P4g:H8{-Cl0Q+a7c0up7h)`*^W3\n6W)?0ExportMessageToFile=1来实现.
`WdmWh6X051Testing软件测试网5P:HT,xG}V~14.不要在Controller机器上运行虚拟用户.51Testing软件测试网v"d?0e)D0?
51Testing软件测试网/eK)b$|*c T15.在场景中设置监视器:51Testing软件测试网{HiF}m:O O ]2a
@B-JE,k+\8F\0 * 内存使用上 mmdrv进程的private bytes
7S.L$N7YQh uN051Testing软件测试网!h_0[+bC* disk使用
%g]p*Mh'V2H051Testing软件测试网vrAFI;D#VEyp wv* CPU使用51Testing软件测试网aLJ _W
51Testing软件测试网i"dGroZ [R#{ K p `"w* 网络使用
Vd8c,w)`M"?W {mY0ItDc%K0C/f g016.把脚本中所与打印信息的脚本去掉.如下面的代码每次迭代都会调用一次,对大量并发用户的运行产生负面的影响.51Testing软件测试网/i0T_6x?6u
51Testing软件测试网&RY$~aH;cVj7x(llr_vuser_status_message("pIteration: %s -51Testing软件测试网P |.Q?"O O#X
U%[
START Action", lr_eval_string("{pIteration}"));
(~ SLVq?hn0lr_output_message("pIteration: %s - START Action", lr_eval_string("{pIteration}"));
+I\4@0m dr5H0Controller处理所有虚拟用户的信息,这样会大大降低Controller的性能. 如下是类似的代码:51Testing软件测试网/Y.V.? I(Pw~
D+MM5sJF
S'`T0web_reg_find("Text=Time on Server", "SaveCount=cErr", ..);
L?)M2nqUk0web_url( some url …);
8|&@(B$uGc\i0if (atoi(lr_eval_string("{cErr}"))>0) {51Testing软件测试网(ZYH/K%C-e6^a3BS
lr_error_message(some message);51Testing软件测试网Q$_*f.?2V!yz
C.f
lr_end_transaction("S05_T01_Request_Content_Page", LR_FAIL);51Testing软件测试网UFZ#?1^,i \"~W
}51Testing软件测试网5u0e+W)\FbzdA
通常认为在脚本中插入lr_error_message是不好的,除非是调用的客户化的API失败了才有必要插入该语句.如果是LoadRunner的函数调用失败(如上面的web_url调用),它会自动发送一个错误消息.
c%I7C!Ny\,`!r051Testing软件测试网&@G~5@7K,dA8~9M}L在大量用户运行的情况下,控制Controller和LG之间的通信流量是非常重要的.发送多余的信息(错误,输出等信息)会增大通信流量降低负载能力.所以,通常都需要把代码中不必要的信息去掉.
.o;b)JJJ;_fS0R[?6JgJy017.去掉脚本中所有的sleep()的调用,用lr_think_time()来代替.lr_think_time给LR让出控制,即LR能够在Vuser休眠的时候去做其他有用的事情.51Testing软件测试网wa-f])RP
pQ"|v`5D _ G018.不要去掉lr_think_time:使用该函数能更准确的模拟负载,对LG产生相对小的压力