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

LoadRunner如何在大负载下测试

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

2l(v*]OX,Q$I,Hq Z2X0   在大负载中使用LoadRunner进行负载测试,需要配置一些环境来满足大负载下各种资源的充足:

?:` }$`*QdJ7O051Testing软件测试网-`y jp#Z"}B

1.为了避免出现“No Buffer Space Available”的错误,需要进行如下配置:51Testing软件测试网S%C D\a \;e

.pF$b(Jk(za0   1)修改注册表:51Testing软件测试网(Ba9s G(pU

x+A!QVU0      * 设置“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\tcpip\Par
8Qo+^-[/ek0ameters\TcpTimedWaitDelay”为 30
r}ux0sA]0      * 设置“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\tcpip\Par
a;VH2r8z u)T\ W0ameters\MaxUserPort”为 65534
6{%L,s r(V5}3Z T0      * 在“HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session
)x:uHg#l;C4~:_Z$@@0Manager\Sub Systems\Windows”设置SharedSection 为 4096

koW\oEs0

:G6WaXL%Q0    2)通过在每个脚本的开头添加如下函数来设置“SHUTDOWN”模式为"ABRUPT"51Testing软件测试网 G)[4ts[`;K g6}

51Testing软件测试网(X7PN-sf!D2`

     web_set_sockets_option(“SHUTDOWN_MODE”,”ABRUPT”)51Testing软件测试网l+Uh$Ot5?;a l-fQ2B

51Testing软件测试网%u oPl-E ^&U0K

 2.关闭所有的杀毒,反间谍扫描软件等。同时也关闭任务扫描和所有不需要的服务。51Testing软件测试网h*hj Z6pL?4B6\0P

$sx;{/hNZJ0 3.脚本运行时设置:

D"U/{~k|8N0

+z%Mxe%{0   1)设置日志为“只在错误发生时发送信息” 

i7M&d!c9k7wR051Testing软件测试网T8?5A:\7W#X gQ HgP

   2)去掉错误时产生snapshot的选项51Testing软件测试网2l{u U%n} q F:j

*z!s@({#s zX0   3)在miscellaneous上,去掉 定义每一步为一个事务 的选项51Testing软件测试网 R DiHL1?

51Testing软件测试网;wG^V5e

   4)不选择 模拟浏览器缓存,选上“simulate new user on each iteration”和它的子选项51Testing软件测试网 M.c-\;SM"ypq0B S

51Testing软件测试网LPi$H\(U

 4.如果下载的页没有资源,在web_url函数中添加“Mode=HTTP”,这样会减少LG上的负载(不用转换成HTML)。默认情况下,web_url的Mode为Mode=HTML51Testing软件测试网b"~V cO?0l

51Testing软件测试网I U.O/F7Rv,] [

 5.重启LG并且确保他们都能跟Controller连接.

/E)m5cT/C OO*^i0

k#Nq4H:IKu0 6.确保LG和控制器上有足够的剩余磁盘空间.51Testing软件测试网8P-^:X|ZR!B&G5s

5i"lw4ez*b3Vx0 7.在controller中去掉web page breakdown51Testing软件测试网P PvO}#|6L+|

51Testing软件测试网N2m u1nY9a!H9W^]

 8.限制Vuser在所有LG上同时进行初始化的数目.可以在Controller的Tools > Options > Run-Time Settings中进行修改.每个LG都有这个设置.51Testing软件测试网8`3x*aC!BV6g G

51Testing软件测试网Il9[OnC[

 9.限制controller在运行时存储的错误数.通过修改wlrun.ini中的[output]项来实现:

$m9x.X5_h%a9W)e F0

U2m!kQF@0  • FlagLimitOutputMessages=1
2?HT,k`c eJ0  • MaxNumberOfOutputMessages=<errors count> (default is 10,000)

v w7r4a8yh051Testing软件测试网c!k6x/I:}7{N9bH

 10.在Controller上修改Monitor的采样率来降低CPU的使用.可以在Controlller的Tools > Options > Monitors 下修改,如下图所示:51Testing软件测试网6\d%z?Iu5E3a

#Gnkj2e)r.`3l0

Q,S]8fw0zL S(G$B%i7F S0

T(uRMz!`+x011. 如果有很多错误产生,最好不要经常打开Error/Output窗口,因为这样会因为访问数据库而打开另外的数据库连接.51Testing软件测试网-_;M0mj0F

5s@a0y @012.负载测试中不要使用"Show Vuser"选项.

'T+|+S%Uqq\u051Testing软件测试网(D W7m5G!F7A$r

13.把输出信息重定向到一个文本文件中来代替输出到mdb文件中.可以在wlrun7.ini中修改[output]下的51Testing软件测试网i]"u rKb4r

51Testing软件测试网Dj.Yv XB

ExportMessageToFile=1来实现.51Testing软件测试网U;@ c'rg-d

9Tv}Z s5V w014.不要在Controller机器上运行虚拟用户.

?Z FQG3UVe051Testing软件测试网 xi)M:c:nvf0L(F)t.B

15.在场景中设置监视器:

'Nqp ~\,[kUd F]0

6DZ hG(G9W8c0  * 内存使用上 mmdrv进程的private bytes

Galm hFlHf051Testing软件测试网1`.mC:R @.g j

  * disk使用51Testing软件测试网H4x(_ fA

51Testing软件测试网)]6y)`k'R#o

  * CPU使用51Testing软件测试网#XWM-DM_

x-C0M"j5s1pkph0  * 网络使用51Testing软件测试网#L0k7T {P!i J

v e3lz Pnh[dP;]016.把脚本中所与打印信息的脚本去掉.如下面的代码每次迭代都会调用一次,对大量并发用户的运行产生负面的影响.51Testing软件测试网mC#gL-u M(}V:Df:a

7`x$rwudD R0lr_vuser_status_message("pIteration: %s -
-S2t~0a$RT@#zA0START Action", lr_eval_string("{pIteration}"));51Testing软件测试网z W0?Y mA5\+d;MQ
lr_output_message("pIteration: %s - START Action", lr_eval_string("{pIteration}"));

)F6t @ mTVhn051Testing软件测试网Mq2{rB!v

Controller处理所有虚拟用户的信息,这样会大大降低Controller的性能. 如下是类似的代码:51Testing软件测试网4z l| FB5Pb

w7u$O hSEn@0web_reg_find("Text=Time on Server", "SaveCount=cErr", ..);51Testing软件测试网ltX$w-IYBA8is
web_url( some url …);
q*ck:Z m%x(w:o0if (atoi(lr_eval_string("{cErr}"))>0) {
,I/~"Fu$uipn{0lr_error_message(some message);51Testing软件测试网 g1f:cdbQ9t+w
lr_end_transaction("S05_T01_Request_Content_Page", LR_FAIL);
H^6Y(L%};[tq3V$[0}51Testing软件测试网5B&zKUM6D,U+U

51Testing软件测试网%o,yk)S/m

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

9Wy\c(v.I#l:`051Testing软件测试网5oDt N"Dll1^*D

  在大量用户运行的情况下,控制Controller和LG之间的通信流量是非常重要的.发送多余的信息(错误,输出等信息)会增大通信流量降低负载能力.所以,通常都需要把代码中不必要的信息去掉.51Testing软件测试网~8x2U#D G$Q ^%WFg

51Testing软件测试网F)} R-An ?

17.去掉脚本中所有的sleep()的调用,用lr_think_time()来代替.lr_think_time给LR让出控制,即LR能够在Vuser休眠的时候去做其他有用的事情.

@Pz5}[/r051Testing软件测试网+M'gp`,L5R J z

18.不要去掉lr_think_time:使用该函数能更准确的模拟负载,对LG产生相对小的压力

!QL `4MT1Uj J0

_E fo0f-E8]4yV019.web_reg_save_param和web_reg_find()函数:

d x`R.d[051Testing软件测试网 _suD5zV(P

   • 在 web_reg_save_param() 中添加“Notfound=empty” 参数.
'G)NLZ{4v L2U&{F%l1aL0   • 在 web_reg_find() 添加 "Savecount=some_parameter_name". 如果你想知道它是否成功可以使用atoi(lr_eval_string("{some_paramater_name }"))来衡量.51Testing软件测试网1V8w Q[er1Psk

51Testing软件测试网cAQJ8`!ao@

20.其他51Testing软件测试网}@s6J-m7R

51Testing软件测试网[\3V lkH.P9Dt

  可能会出现的问题:51Testing软件测试网K-v mVEb1px8wn

51Testing软件测试网-s6@1f,V+M8pK

   * 测试产生了太多的错误:51Testing软件测试网2}:DQf{dQHK,S

51Testing软件测试网[U RO&N0_$`2Q

     错误引擎不能处理多于1.5GB的错误51Testing软件测试网c+J)TZ r9o5Gr4^Z

o'}R'i ^6w0     如果测试过程中每秒产生多与1000个错误,Controller的行为将不可预测51Testing软件测试网(X*t/Y'F:r

r;w$l.Be;LJ1e k-@0   * 测试产生了大量的在线数据

v9z)Ym)C*Ev!d0

eji9iy+o0 上面的两个问题都可以使用如下的方法解决:

'W1Dm/C }j.L:M e051Testing软件测试网a.Y Vm]9kY

   例如: 场景是一个组有1000个虚拟用户

L'l t?5KVM051Testing软件测试网P U7~&{-ix,c^{

   可以把这个组分成两个组:51Testing软件测试网BZ/A!m0ZS~7^

m%s:sH;~;vC"iU m4~0   G1 100 Vusers51Testing软件测试网2@]A9O5x}'S.c-b
   G2 900 Vusers

2B/E p G#m051Testing软件测试网1|y?&J%[pC

   这两个组可以跟原始的组产生一样的负载,对于G2在组命令行中添加如下参数:

*tm@mC)N0

z)f9Y s g5D;T&Wi+J0   -disable_data -disable_messages51Testing软件测试网v-Vt;J0SVH ykP

%OR9]/cL0    _disable_data : 让这个组不发送任信息,不发送任何online信息,不写任何offline信息.

T!F ST/s ^/Mn051Testing软件测试网%x3[ V!b/Q'q w

    _disable_message: 让这个组不给Controller发送任何信息(错误,日志)51Testing软件测试网 G[2E-soh$`

51Testing软件测试网4NL?-^l%xn.g)L

注意:使用上面的命令行选项会使该LG不给congtroller发送online和offline信息.这样这个组上的虚拟用户的分析数据就收集不到了.

hU?*N-y G051Testing软件测试网I? {%f|j jR

21.如果需要远程访问,Mercury仅支持PC anywhere.51Testing软件测试网C!MGY j |7u(~

51Testing软件测试网/V8va R1F%t#\P3i1vQ

翻译自<LoadRunner Large Load Test Considerations>51Testing软件测试网ua+~M:g }k

c(hX)~fw`0  51Testing软件测试网(TmZ;i5fC1pNS

*y;W?}1iE1w0   51Testing软件测试网+u6?/?4@lkz/i6j

a1df2CK u0 51Testing软件测试网6I.H7Bn4Q?`


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