热爱测试,主要研究性能测试和自动化测试方面的技术,希望与同样对测试有热情的你一同进步成长

LoadRunner如何在大负载下测试

上一篇 / 下一篇  2008-06-10 14:36:10 / 个人分类:性能测试

|7_T*cn ?$A0   在大负载中使用LoadRunner进行负载测试,需要配置一些环境来满足大负载下各种资源的充足:

$_a ?+k2@0

t)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 DDu(h?J a0      * 设置“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\tcpip\Par
gR{2j^R-Kp3S0ameters\MaxUserPort”为 6553451Testing软件测试网2H[ YXgG-Y Q D#k
      * 在“HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session51Testing软件测试网k.b L|:Me/T
Manager\Sub Systems\Windows”设置SharedSection 为 4096

J8z} bn0

MlAUX P0    2)通过在每个脚本的开头添加如下函数来设置“SHUTDOWN”模式为"ABRUPT"51Testing软件测试网\0`,k8z6x9` ^;^

51Testing软件测试网;Y$F(]'`1L6h r$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;Z m?'bq2s

 3.脚本运行时设置:51Testing软件测试网&O6P"D+^u X

$RS2c N:{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_JF

   4)不选择 模拟浏览器缓存,选上“simulate new user on each iteration”和它的子选项

Z t.og+e*e zm*^051Testing软件测试网5Cnjfr6K

 4.如果下载的页没有资源,在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${bl;` _0 6.确保LG和控制器上有足够的剩余磁盘空间.

j%Qts%R h0

A~'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 Bo

 9.限制controller在运行时存储的错误数.通过修改wlrun.ini中的[output]项来实现:51Testing软件测试网5|ouW[{XWQ

K#R9FJJJ1F OV(z0  • FlagLimitOutputMessages=151Testing软件测试网8WY/ef%|,to.` c
  • MaxNumberOfOutputMessages=<errors count> (default is 10,000)

cm2Z TV051Testing软件测试网|5R\&D@4Y6s

 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+DjY

11. 如果有很多错误产生,最好不要经常打开Error/Output窗口,因为这样会因为访问数据库而打开另外的数据库连接.

Gl$BN d)D~051Testing软件测试网vcB;b-Ng X'O

12.负载测试中不要使用"Show Vuser"选项.

K |)@6D:S A9Lb0

7W#f/kVM013.把输出信息重定向到一个文本文件中来代替输出到mdb文件中.可以在wlrun7.ini中修改[output]下的

P4g:H8{-Cl0Q+a7c0

up7h)`*^W3\n6W)?0ExportMessageToFile=1来实现.

` WdmWh6X051Testing软件测试网5P:HT,xG}V~

14.不要在Controller机器上运行虚拟用户.51Testing软件测试网v"d?0e)D0?

51Testing软件测试网/eK)b$|*c T

15.在场景中设置监视器:51Testing软件测试网{HiF}m:O O ]2a

@B-J E,k+\8F\0  * 内存使用上 mmdrv进程的private bytes

7S.L$N7YQhuN051Testing软件测试网!h_0[+bC

  * disk使用

%g]p*Mh'V2H051Testing软件测试网vrAFI;D#VEyp wv

  * CPU使用51Testing软件测试网aLJ _W

51Testing软件测试网 i"d GroZ [R#{ K p `"w

  * 网络使用

Vd8c,w)`M"?W {m Y0

ItDc%K0C/fg016.把脚本中所与打印信息的脚本去掉.如下面的代码每次迭代都会调用一次,对大量并发用户的运行产生负面的影响.51Testing软件测试网/i0T_6x?6u

51Testing软件测试网&RY$~aH;cVj7x(l

lr_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}"));

mOF k SC x0

+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

51Testing软件测试网M&VD2?Y&i

  通常认为在脚本中插入lr_error_message是不好的,除非是调用的客户化的API失败了才有必要插入该语句.如果是LoadRunner的函数调用失败(如上面的web_url调用),它会自动发送一个错误消息.

c%I7C!Ny\,`!r051Testing软件测试网&@ G~5@7K,dA8~9M}L

  在大量用户运行的情况下,控制Controller和LG之间的通信流量是非常重要的.发送多余的信息(错误,输出等信息)会增大通信流量降低负载能力.所以,通常都需要把代码中不必要的信息去掉.

.o;b)JJJ;_fS0

R[?6J gJy017.去掉脚本中所有的sleep()的调用,用lr_think_time()来代替.lr_think_time给LR让出控制,即LR能够在Vuser休眠的时候去做其他有用的事情.51Testing软件测试网wa-f])RP

pQ"|v`5D_ G018.不要去掉lr_think_time:使用该函数能更准确的模拟负载,对LG产生相对小的压力

ilr~T4j:s6a0

_8Bdw)ig019.web_reg_save_param和web_reg_find()函数:

:w1ZDr9|oHWGJ0

&u7uCz8B6J9a M2Oo0   • 在 web_reg_save_param() 中添加“Notfound=empty” 参数.51Testing软件测试网1f+kF(fN2v#a
   • 在 web_reg_find() 添加 "Savecount=some_parameter_name". 如果你想知道它是否成功可以使用atoi(lr_eval_string("{some_paramater_name }"))来衡量.

Ky2h l:^#h:m1B%j051Testing软件测试网Jp'P)UpGnB*a

20.其他

hC2H5R#Fa^0i#\k6N051Testing软件测试网yWU+a$k `.|8~N-j!W1A!@

  可能会出现的问题:51Testing软件测试网[X!v ~S

|)@/`5cE0   * 测试产生了太多的错误:

+`9B;[0{A.[w:w7J!a6g0

o2@w+_ u0     错误引擎不能处理多于1.5GB的错误51Testing软件测试网/xa w_~ aR,h

51Testing软件测试网WSJ&HJ8]3?Y%R"k

     如果测试过程中每秒产生多与1000个错误,Controller的行为将不可预测

,\w1a3J\6VA051Testing软件测试网9U({ QU3v2]}4O p#V` xs

   * 测试产生了大量的在线数据

*| Z `d*_2S3h0

b8_8]-\0W+yTg0 上面的两个问题都可以使用如下的方法解决:51Testing软件测试网#}-a}`/eV0A

6a%z m8]U m0   例如: 场景是一个组有1000个虚拟用户

$~E5]pD\051Testing软件测试网)T2H:yfO

   可以把这个组分成两个组:51Testing软件测试网*Toa/m9fy

51Testing软件测试网i2N-PA9Yo#?5V

   G1 100 Vusers51Testing软件测试网;G0Z#~m.Wd
   G2 900 Vusers51Testing软件测试网1b/WP|@:UeU

!i#}PU.HZ:?#~_0   这两个组可以跟原始的组产生一样的负载,对于G2在组命令行中添加如下参数:

2p*d$y N\-p r-zl0

Xhl(iQT SsVm[0   -disable_data -disable_messages51Testing软件测试网+BN+rN&\)kO,zy

\A8\A(c.O/]0    _disable_data : 让这个组不发送任信息,不发送任何online信息,不写任何offline信息.

9b Cx Q&_7A*j051Testing软件测试网$L^9V#s3xKKP.X

    _disable_message: 让这个组不给Controller发送任何信息(错误,日志)51Testing软件测试网2V'y2y1l n!M(I

+Joh%})AT(@P V"^&x"V0注意:使用上面的命令行选项会使该LG不给congtroller发送online和offline信息.这样这个组上的虚拟用户的分析数据就收集不到了.

cb%O;P N]X0

%Ud!FV/Q%f+Q-F021.如果需要远程访问,Mercury仅支持PC anywhere.51Testing软件测试网 Vo6?*Sf0~+?)_

51Testing软件测试网*U)C ~c V3rX)S

翻译自<LoadRunner Large Load Test Considerations>

Zq D6M0i0

4X dF gj.s[0O!E%R0  51Testing软件测试网9QW*H7v&o)gn

51Testing软件测试网 _$CT-L)o

   51Testing软件测试网uQ dt"h@$|~a

51Testing软件测试网pEG4Nv7p#ci|

 51Testing软件测试网V+c{ \ z)Njk


TAG: 性能测试

xiaoshi_2011的个人空间 引用 删除 xiaoshi_2011   /   2013-08-26 15:33:38
5
zibeike的个人空间 引用 删除 zibeike   /   2008-07-31 22:41:24
加汕是加油的意思吗? 第一次听说这样的词, 呵呵,谢谢鼓励!
卖烧烤的鱼测试博客 引用 删除 卖烧烤的鱼   /   2008-07-16 16:23:59
不错,希望多多加汕,多出些这样的^_^
如果Zee还在工作 引用 删除 Zee   /   2008-06-29 00:34:08
挺不错。
猪猪的蓝色梦幻城堡 引用 删除 qicyt1812   /   2008-06-23 17:10:22
好多步骤哦,吓晕了,哈哈
章鱼的测试空间 引用 删除 62369432   /   2008-06-23 14:21:52
如果每一步都说明一下目的那就更好了~~~~~~~
 

评分:0

我来说两句

Open Toolbar