使用LodRunner实现大负载测试的四部曲

上一篇 / 下一篇  2012-01-20 13:52:42 / 个人分类:lr

 LoadRunner以下简称(LR)是目前业界最流行的压力测试工具,广泛地应用于电信、金融、电力行业。LR安装后文件非常大,这也说明LR是个强大复杂的工具。LR入门的介绍在网上有很多好的文章,它们都很好的介绍了工具的使用。但是对于很多行业级应用,使用LR会同时运行很多虚拟用户数(1000+),本文针对这样的测试类型介绍了一些需要考虑的问题和解决方法,希望给同行一些帮助。8oj&j1Q4}72047

k w&v:_n+tx'B9a72047  第一步:配置系统参数51Testing软件测试网kc&QJi:iX+h

U[uJV72047  大并发用户的情况下,会出现如下问题:51Testing软件测试网:PF~$L1]#L-l

1CI:G^2D'aR72047  1) 当采用netstat命令时,看到很多Socket处于“WAIT”状态

kmY/U K~Y(b72047

)~h?8LO#X72047  2) 负载增大时连接失败

M;x]g4Gxp7204751Testing软件测试网1?y~.]n._9J

  3) mmdrv的句柄数 随着虚拟用户的运行而增加51Testing软件测试网&D[0U;l(p u5jH

51Testing软件测试网3OM*yj1QD%[

  4) 当建立连接时出现"No buffer space available"错误信息51Testing软件测试网{`8sh5G _?u

Zg9V-qHq_i(\72047  解决方法51Testing软件测试网D(r;gvz"bq

.d9o6P3`9g*[5E72047  编辑以下注册表项:51Testing软件测试网c)]m7x^N v~c

/m^3v;@ mQ72047  1) 设置

!PyE'] V;If2Q7204751Testing软件测试网pakg _DH,M6`

  “HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\tcpip\Par

"F"q{x mK b7s1nI+h7204751Testing软件测试网1n~WP(be$E(X

  ameters\TcpTimedWaitDelay” 为30

&|#_"`xx6[)p72047

.} v(m['mP1~!J:Vr72047  2) 设置

4`5V |C/cO'}q.e)~72047

Q-k5R't-@2s7y:h&OS72047  “HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\tcpip\Par

j4_N+R#sf72047

tm[t,T7vvO7p72047  ameters\MaxUserPort”为6553451Testing软件测试网7V8b-}Mh,EKy

51Testing软件测试网zK` c,B1J|2F6e|

  3) 设置

cp K` _2g/FS7204751Testing软件测试网 ^}"R:j? T`!RKT

  “HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session51Testing软件测试网zcnZoX

n|[/tt T*MD,WT72047  Manager\Sub Systems\Windows” 为SharedSection为4096

.M `%qv9F-@72047

@)va`"T ~ L72047  4) 脚本的第一行加上web_set_sockets_option(“SHUTDOWN_MODE”,”ABRUPT”)函数将SHUTDOWN_MODE从默认模式GRACEFUL改为ABRUPT51Testing软件测试网;O(f$v$|OZ

51Testing软件测试网?-x7qn2} x

  第二步:配置LR

S^&j#\3o5t7204751Testing软件测试网)i [)]Z]0ZLp&l

  1) 脚本运行时设置51Testing软件测试网oP7G8BD\gO ?J^5Q

51Testing软件测试网2oJ,P#[4y$Bj \

  ● 消息处理时勾选"send message only when error occurs"

O*v ^_"\ iW$?/](w%Z2{q72047

PW6W|s,S72047  ● 禁用snapshot on error51Testing软件测试网cXI$^ S%z'{C0{

I0KC6BUDT4[!d72047  ● "define each step as a transaction"取消勾选

pi?DB({72047

7]a3K\ h JR72047  ● 取消"simulate browser cache"勾选, 勾选“simulate new user on each iteration”和它的子选项51Testing软件测试网w B0m'E7kE$A(A

51Testing软件测试网5hA K`B| R9[

  2) 将脚本中web_url函数中的"Mode=HTML"默认方式改为"Mode=HTTP",这将减小LG机器上的压力(不解析HTML)

g.V,Y UhQ{:K V){7204751Testing软件测试网tH D fqjs!r,y?

  3) 将在controller的diagnostics->configuration中,禁止webpage breakdown51Testing软件测试网? ~7P4u] Y7VP

4dQQ |U.w72047  4) 在Controller通过Tools > Options > Run-Time Settings限制同一时间在所有LG上初始化虚拟用户的数值,设置会被每台LG获得,这样做的目的是为了避免在脚本执行的初始阶段LG系统资源的过度利用.

sWB&HTQ+rP"P7204751Testing软件测试网E4s'~3O/J/SE.[5E

  5) 修改系统目录下的wlrun7.ini限制测试运行时controller存储的错误数量,在[output]选项中,作如下修改

mDi `#Y{.ey7204751Testing软件测试网CLU a ~7G

  FlagLimitOutputMessages=151Testing软件测试网.ISa&CaX

51Testing软件测试网,}p Mx7h0t

  MaxNumberOfOutputMessages=<errors count> (默认为10000)51Testing软件测试网v U0yR A-m

-g1f!? YQvy Um72047  6) 在Controller通过Tools>Options>Monitors修改monitor的采样率,这将减小测试运行时Controller的CPU利用率,如下图所示:51Testing软件测试网"D(W.n8kY oq&]

3k&z~,{QcmWlD-[;z72047  7) 修改wlrun7.ini中的ExportMessagesToFile=1重定向输出信息到.txt文件而不是到MDB文件51Testing软件测试网d:L!eyMX\

5A)?jny7G6s72047  此外:关闭Controller和LG上的防病毒,防间谍软件,关于运行在以上电脑上不要的Windows服务;在Controller不要运行虚拟用户;不要频繁打开Error/Output窗口,因为这将增加额外Controller上额外的数据库连接数这些都是对进行成功的大负载测试的有益的建议。51Testing软件测试网T'ld\{!X(SYb

[?^]dX&D72047  第三步:修改脚本

5yDA-x0btNk7204751Testing软件测试网7CK&O\1m!ij)?

  1) 在负载测试时,保证Controller和Generator的网络通信非常重要,大量的信息(error message,output message)大并发负载测试有着很大的负面影响

-q/c!S Z5r+o|Ey7204751Testing软件测试网*t&Z?&z m*rg1sg

  如以下两例51Testing软件测试网1rbY.eH Au

!U4KHX#rC'C&ny~72047  ------------------示例1-----------------------

%]w"H:tC o0P3o72047

w%gj {4j7e$e#b72047  lr_vuser_status_message("pIteration: %s -START Action", lr_eval_string("{pIteration}"));

%Q|j}3D]W72047

^ _:xCu,kl72047  lr_output_message("pIteration: %s -START Action", lr_eval_string("{pIteration}"));

l9](mlhS72047

$O(E7v9B V#u }ml72047  ------------------示例2-------------------------51Testing软件测试网s k%{(a`*srV+Ki

uw*w @\$\&qX}72047  web_reg_find("Text=Time on Server", "SaveCount=cErr", ..);

} _F4RSiZ@(h7204751Testing软件测试网y%`^:rr sUt jI.L

  web_url( some url …);51Testing软件测试网'~X$mW4c'J1w:v3l

51Testing软件测试网B9z,ALa

  if (atoi(lr_eval_string("{cErr}"))>0) {51Testing软件测试网cd!`/c$c;MzSR3Z2}

fLU_.m8jM72047  lr_error_message(some message);51Testing软件测试网-J W!I I{%~}x(J

O&Gf&y,oO,K,`72047  lr_end_transaction("Request_Content_Page", LR_FAIL);51Testing软件测试网s/v&~!v/x VQ2Rm

%\Dn6? E7C&@ YL Ln72047  }51Testing软件测试网&qV7K*Z&S/h

51Testing软件测试网%\K hr"@8U8F

  -----------------------------------------------------------------------------

&U,pxN_L8zE7204751Testing软件测试网/x7^ys9P}0I0Vz*u

  这些语句都仅仅应该出现在脚本调试时而不应该出现在负载测试时的脚本中,在正式的负载测试前,注释掉这些语句。

B[7\D2f8oa7204751Testing软件测试网-YK"sf$aTJ'W6|7Eg$@Ld

  2) 把脚本中sleep()函数改为lr_think_time()函数,lr_think_time将控制权交还给LR,这意味着LR可以做其他事情。不要忽略lr_think_time,适用参数值以模拟更精确的负载同时也可减小LG的压力。

5N C J9h_%vdKyk{72047

Z lO3_C*@-U(cQ:X$l#m72047  3) 在web_reg_save_param函数 添加 “Notfound=empty”51Testing软件测试网iJ1k/Q]'A-h*zo

/V&_5[4\Y9r~"v)]72047  第四步:设置组策略51Testing软件测试网1H_/rK+E-\M

y3KY Nn.rO72047  大负载测试时会有以下情况发生

B cF&Q-O-S*a7204751Testing软件测试网c\3V/I8F/N

  ● 产生很多错误,数据量大于1GB

+F@}3[2EKa72047

R0S Vv%z%NH72047  ● 假如每秒产生1000条左右错误的话,Controller的行为将很难预测51Testing软件测试网'd1}PR-Uje,X

6j;Ci6[im"a3_#b(b72047  ● 压力测试产生很多运行数据

&bU |7O0l;_nm,Z7204751Testing软件测试网Y uF.] C9v*MY6F0B*b X

  这些问题可以通过设置一个合理的组策略避免,以下举一个例子说明

B0y4GP~^a[#~2F72047

jw(Q;c bgh };T@72047  场景为1000个虚拟用户,用一个Group运行

Rv%hU$|1y/EA72047

S kAo4McxR,sO72047  这时把这个Group分为两个Group:51Testing软件测试网5Yt7nI4{Orr

6vG|aY*s[w\*{y72047  G1-〉100 Vusers

pk H-o-hnh&R72047

3{g0X C%x+wm,UX72047  G2-〉900 Vusers

5] V8Le uq,T yU7204751Testing软件测试网0? D0H*js6j

  在G2的设置中,添加以下命令行:51Testing软件测试网y^qbb

51Testing软件测试网;T(aAq4|,n

  –disable_data -disable_messages51Testing软件测试网ysG5C~{ ft

51Testing软件测试网+wo)H.w;F&igF-t6Q0j

  -disable_data – 指示Group不要发送和写入运行数据

g:XG3G,x7[e`7204751Testing软件测试网SNG._`,I

  -disable_messages – 指示Group不要发送任何信息(errors,logs)给Controller51Testing软件测试网Wxlx1g

51Testing软件测试网/Q/G:G4C.p

  结尾语:单从测试而言,SilkPerformer和QALoad以及其他开源工具皆可实现压力测试的目的,本文介绍的内容从方法上对于其他工具也适用,但实现细节会略有差别。祝大家成功!

N:lX/uKu&f?*~2}S72047

TAG:

 

评分:0

我来说两句

日历

« 2024-05-05  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 36862
  • 日志数: 104
  • 建立时间: 2011-10-10
  • 更新时间: 2012-04-12

RSS订阅

Open Toolbar