码迷,mamicode.com
首页 > 其他好文 > 详细

总结——LR学习总结

时间:2018-04-09 15:01:14      阅读:696      评论:0      收藏:0      [点我收藏+]

标签:性能测试


2.1    web_submit_data

页面提交数据项。输入框输入。使用用户名和密码进行登录用web_submit_data()函数提交表单数据:HTTP POST 请求,最常见的参数形式; Web_submit_form差不多。

技术分享图片

1)  EXTRARES:在开始录制选项中,Toos—Recording Option—Recording选项中,有一个Advanced HTML选项,可以设置是否录制非HTML资源。只有选择了“Record within the current script step”时,List of Resource Attributes才会被录制到(EXTRARES下面的URL才会出现)。非HTML资源(如:gifjpg等图象文件,javascriptVBScriptactivex、小程序)

技术分享图片

2)  Snapshot:顾名思义,就是快照,代表当前的stepSnapshot显示了客户端在执行完当前step后的样子。在Tree Ciew右侧的frame中可以查看Snapshot,在LoadRunner 8.0中,Snapshot包含Page ViewClient RequestServer ResponseSnapshot有两种生成方式,一种是在record的时候生成,另一种是在replay的时候生成。你可以对比两种方式生成的Snapshot,以发现哪些是动态值,需要参数化。

 

2.2    web_url

根据url获取图片;web_url()函数访问数据;请求方式:HTTP GET 请求;加载指定的Web页面(GET请求

技术分享图片

2.3    web_custom_request()

将终端信息提交到服务端进行保存;用web_custom_request()函数提交数据:HTTP POST 请求,请求参数为json格式;

技术分享图片

2.4    bfDeleteRoles

删除前的校验。deleteRoles删除。程序里写的两个向服务器提交数据的方法。不是重复录制。

技术分享图片

2.5    数据量大小

数据库中1w条记录与7w条,查询响应时间应该

 

2.6    top

2.7    free

2.8    iostat

2.9    录制脚本时,lr不能打开浏览器。

   解决办法:关闭所有lr,任务管理器中结束ie浏览器的进程,执行"C:\Program Files (x86)\HP\LoadRunner\bin\register_vugen.bat",然后再重新录制。 如果还是不可以,需要重启电脑。

2.10  参数设置

脚本设置完参数化,脚本运行的每一遍所取的参数化的值都不一样,那么这个值按照个什么情况来取呢?会有很多种方式

Select next row【选择下一行】:

技术分享图片

顺序(Sequential:按照参数化的数据顺序,一个一个的来取。

随机(Random:参数化中的数据,每次随机的从中抽取数据。

唯一(Unique:为每个虚拟用户分配一条唯一的数据

 

Update value on【更新时的值】: 

技术分享图片

每次迭代(Each iteration) :每次迭代时取新的值,假如50个用户都取第一条数据,称为一次迭代;完了50个用户都取第二条数据,后面以此类推。

每次出现(Each occurrence):每次参数时取新的值,这里强调前后两次取值不能相同。

只取一次(once) :参数化中的数据,一条数据只能被抽取一次。(如果数据轮次完,脚本还在运行将会报错)

 

上面两个选项都有三种情况,如果将他们进行组合,将产生九种取值方式。

Select Next Row

【选择下一行】

Update Value On

【更新时的值】

Replay Result

【结果】

顺序(Sequential

每次迭代(Each iteration)

结果:分别将15条数据写入数据表中

功能说明:每迭代一次取一行值,从第一行开始取。当所有的值取完后,再从第一行开始取

如:如果参数化文件中有15条数据,而迭代设置为16次,那执行结果中,参数化文件第一行的数据有两条

顺序(Sequential

每次出现(Each occurrence)

结果:分别将15条数据写入数据表中

功能说明:每迭代一次取一行值,从第一行开始取。当所有的值取完后,再从第一行开始取

如:如果参数化文件中有15条数据,而迭代设置为16次,那执行结果中,参数化文件第一行的数据有两条

顺序(Sequential

只取一次(once)

结果:表中写入15条一模一样的数据。

功能说明:每次迭代都取参数化文件中第一行的数据。

随机(Random

每次迭代(Each iteration)

结果:表中写入15条数据,但可能有重复数据出现

功能说明:每次从参数化文件中随机选择一行数据进行赋值

随机(Random

每次出现(Each occurrence)

结果:表中写入15条数据,但可能有重复数据出现

功能说明:每次从参数化文件中随机选择一行数据进行赋值

随机(Random

只取一次(once)

结果:表中写入15条相同数据

功能说明:第一次迭代时随机从参数化文件中取一行数据,后面每次迭代都用第一次迭代的数据。

唯一(Unique

每次迭代(Each iteration)

自动分配块大小

结果:分别将15条数据写入数据表中

功能说明:第一次迭代取参数化文件中的第一条数据,第二次迭代取第二条数据,以此类推。

注:如果设置迭代次数为16次。结果:在执行第16次迭代时会抛异常,异常日志可在LoadRunner的回放日志(replayLog)中看到。

唯一(Unique

每次出现(Each occurrence)

步长为1

结果:分别将15条数据写入数据表中

功能说明:第一次迭代取参数化文件中的第一条数据,第二次迭代取第二条数据,以此类推。

注:如果设置迭代次数为16次,而参数化文件中只有15条数据,明显数据不够。此时可以设置“when out of values”属性来判断当数据不够时的处理方式

Abort Vuser:中断虚拟用户

Countinue in a cylic manage:循环取参数化文件中的值,即:当参数化文件中的值取完后又从参数化文件的第一行开始取值。

Countinue with last value:继续用最后一条数据

唯一(Unique

只取一次(once)

结果:表中写入15条相同数据

功能说明:每次都取参数文件中的第一条数据进行赋值

 

 

总结性:

Unique Each iteration    Countinue in a cylic manage

 

2.11  关联

int web_reg_save_param (const char *mpszParamName, <List of Attributes>, LAST);

ParamName:存放动态数据的参数名称。

list of Attributes:其他属性,包含 Notfound”、“LB”、“RB”、“RelFrameID”、“Search”、“ORD”、“SaveOffset”、“Convert”以及“SaveLen”。

下面将详细说明每个属性值的意义:

1Notfound:指定当找不到要找的动态数据时该怎么处理。当指定Notfound=error时,表示着找不到动态数据时,就发出一个错误消息。此为该属性的默认值。当指定Notfound=warning时,表示当找不到动态数据时,不发出错误消息,只发出警告,脚本也会继续执行下去不会中断。在对脚本出错时,可以如此设置。

2LB:动态数据的左边界字符串。此属性是必须要有的,而且区分大小写。

3RB:动态数据的右边界字符串。此属性是必须要有的,而且区分大小写。

4RelFrameID:相对于URL而言,欲搜寻的网页的Frame。此属性可以是All或是数字,而且可有可无。

5Search:搜寻的范围,其值可以是Headers(只搜寻headers)、Body(只搜寻body部分,不搜寻header)、Noresource(只搜寻body部分,不搜寻headerresource)或是All(搜寻全部范围,此为默认值),此属性可有可无。

6ORD:指明从第几次出现的左边界开始才是要撷取的数据,默认值是1。假如该属性值为All,则所有找到符合的数据会存储在数组中。此属性可有可无。

7SaveOffset:当找到符合的动态数据时,从第几个字符开始才开始存储到参数中。此属性值不可为负数,其默认值为0

8Convert:转换数据格式。当指定该属性值为HTML_TO_URL时,意味着将HTML-encoded数据转成URL-encoded数据格式。如果是HTML_TO_TEXT,表示将HTML-encoded数据转成纯文字数据格式。

9SaveLen:当找到匹配项后,偏移量之后的几个字元存储到参数中。此参数可有可无,默认值是-1,表示一直到结尾的整个字符串都存入参数中.


怎么插入关联函数呢?
根据我的经验,当找到两个脚本的差异后,在对应区域插入关联函数,单击回车键,显示一行为空,在此行可以手动输入关联函数web_reg_save_param"参数名称","左边界","右边界","查询区域",LAST;或单击鼠标右键单击【insert>net step...>add step界面,step type中选择services>web_reg_save_param,单击【ok】键,弹出如下图所示:

技术分享图片

单击【OK】键,显示如下信息:

web_reg_save_param("lt",
  "LB/IC=name=\"lt\" value=\"",
  "RB/IC=\"",
  "Ord=1",
  "Search=Body",
  LAST);

对脚本中需要参数化进行替代,如下图所示:

技术分享图片

 

对于确定参数的左右边界,我个人建议是在找到脚本中差异性的地方【LT-68750-afrD2frlzMHDQ1wwDsjlNugZgY0mxw】后复制,然后在Generation Log日志中通过ctrl+F组合键查找,如下图所示:

技术分享图片

 对于引号需要使用【\】作转义,例如上面的左边界可以写成name\"lt\"  value=\"   ,右边界可以写成\" 

 

第五步:验证关联函数是否正确。

首先设置一下输出日志,在VuGen的工具栏运行时设置【Run-time Settings>log>勾选Enable logging>Always send messages>Extended log>勾选Parameter substitution。个人观念,在负载测试时不需要输出参数日志,改为Standard log日志即可,因为输出参数日志也需要时间。如下图所示:

技术分享图片

 回放脚本时,会在Replay Log日志中可以显示关联参数的相应值,此值是动态变化的,每一次执行后,显示的值都不一样。如下图所示:

技术分享图片

 

2       环境配置

2.1    cpu

4cpu8核。 (之前是2cup ,后来调到8cpuCpu 都是2的次幂形式。)看nmonsys_summ 图的%比。

 

2.2    内存

10g内存。(之前是6g内存)。看nmonmem图中memfree  memtotal ,剩余空间和总空间。

 

2.3    线程数

java线程数:来一个用户会占用一个线程,用完随即释放。 我们测试的只是登陆退出,所以退出后线程立马释放。在weblogic 控制台中会显示出线程活动数和空闲数,如果有等待的线程数说明这个线程数不够用。根据处理业务的大小判断,一个cpu可处理25-30个线程。

技术分享图片

# 调整java进程数。

export JAVA_OPTIONS="${JAVA_OPTIONS} -Dweblogic.threadpool.MinPoolSize=100"

export JAVA_OPTIONS="${JAVA_OPTIONS} -Dweblogic.threadpool.MaxPoolSize=550"

 

 

linux下系统对用户的默认线程数做了限制,可以通过:

ulimit -a

命令进行查看:

core file size          (blocks, -c) 0

data seg size           (kbytes, -d) unlimited

scheduling priority             (-e) 0

file size               (blocks, -f) unlimited

pending signals                 (-i) 515223

max locked memory       (kbytes, -l) 64

max memory size         (kbytes, -m) unlimited

open files                      (-n) 1024

pipe size            (512 bytes, -p) 8

POSIX message queues     (bytes, -q) 819200

real-time priority              (-r) 0

stack size              (kbytes, -s) 10240

cpu time               (seconds, -t) unlimited

max user processes              (-u) 1024

virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited

其中

max user processes              (-u) 1024

表示当前系统允许的最大线程数,可以把此参数设大一些。

ulimit -u 5000

设置当前系统用户最大允许的线程数,只对本次会话有效,如果想要永久生效,可以通过修改:

$ cat /etc/security/limits.d/90-nproc.conf 

# Default limit for number of user's processes to prevent

# accidental fork bombs.

# See rhbz #432903 for reasoning.

 

*          soft    nproc    1024

只需要将1024改成你需要的值即可,设置完需要重启系统已生效。

 

 

 

技术分享图片

 

2.4      Stuck Thread MaxTime

堵塞线程时间,超过这个时间没有返回的执行线程,系统将认为是堵塞线程如果weblogic认为某个队列中的所有的线程全部堵塞的话,weblogic将会增加执行线程的数量。注意:执行线程的数量一旦增加目前weblogic不会去减少他,如果增加了一些线程以后再次出现overflow的警告,weblogic会继续增加执行线程的数量,一直到达到上限为止。

 

例如可以改成:默认600 改成1200 

 

 

 

2.5    weblogic连接数

weblogic连接数:50-450 ,最大值比线程数多点就行了。

 

2.6    JTA

JTA 3000

 

2.7    数据库session连接数

数据库session连接数:4000 硬件提升后,发现压不上去,而且打开浏览器登陆时,包数据库连接池pool 问题。 经查看是连接数过多,因为登陆后有好几条sql语句,每一条占用一个session连接数。

 

 

2.8    网络

网络是:1000M 开始是100M的。 压不上去了后来看了一下网络拓扑图,发现连的是100M交换机的。 nmonnet图,1000M / 8 =120 MB/S ,所以图的上行和下行各占60MB/S ,如果超过了,说明网络有问题。

 

 

 

2.9    压力机所能承受的用户数

压力机所能承受的用户数:400左右。 如果过多的话,压力机的内存和cup 和网络就承受不住。

 

 

 

2.10  io读写

io读写:如果数据交互特别多的话,io读写就耗费大。 Nmon上的线合并在一起,就说明磁盘不够用的了,读写后没有及时释放。

 

 

 

2.11  集群环境配置参数:

4cpu 8核。

    平台jvm最大内存8G

JDBC池最大600

JAVA进程池最大600最小400

网络是:1000M

数据库session连接数,4000

JTA 3000

粘滞超长时间:216000

2.12        确定响应时间正确:

  正在并发时,在ie浏览器中做一次操作,看一下响应时间是否与LR分析出来的差不多。

 

2.13  sql分析

   当软硬件配置都没什么问题时,响应时间过长或是通过事物数折线图不正确时,需要看一下awr报告中数据库的sql脚步执行时间。

 

 

2.14  通过事物数与并发数成正比。

 

2.15  硬件配置

Nginx要单独装一台机器,不然会影响应用服务器的性能。各节点要分开到虚拟机上。反向代理。

技术分享图片

 

 

2.16  数据库优化(oracle)

目前可以调整的主要是数据库内存配置和最大连接数的基本配置,提高并发处理效率。

在进行测试时监测会话及连接等信息

Select * from v$session

Select * from v$session where status=ACTIVE;

Select * from v$process; 

Select * from v$locked_object; 

 

建议调整

SGA参数Data buffer,将其尽可能的调大些。避免重复查询的磁盘I/O操作。

 

调整PGA参数设置原则:

SGA+PGA+OS使用内存<总物理RAM在调试过程中可以观察PGA缓存设置命中率:

select value from v$sysstat where name ='physical reads'; 

SQL> select value from v$sysstat where name ='physical reads direct'; 

SQL> select value from v$sysstat where name ='physical reads direct (lob)'; 

SQL> select value from v$sysstat where name ='consistent gets'; 

SQL> select value from v$sysstat where name = 'db block gets'; 

 

 

 

 

3       LR问题集

4.1              另一个程序正在运行

也许大家遇到过这样的问题,如图:

技术分享图片

解决方法:打开任务管理器:找到这个进程:ThumbProcess.exe,关掉这个进程即可解决。

技术分享图片

 

4.2              事物响应时间一直处于直线状态。

解决方法:参数化设置成Unique

脚步中去掉EXTRARES下面的URL下载;

场景运行时设置忽略思考时间和log日志时间。

 

 

4.3              运行时,有部分用户一直结束不了

  换个LR 试试。 或者是卸载了重新装一个英文版的, 中文版的好出这种问题。

 

4.4              脚本中产生多次请求

1.    使用loadrunner进行录制脚本之后,可以看到的在脚本有一个请求,会产生两次

技术分享图片

2.    进行点击录制的按钮,进入到录制选项中,进行点击option按钮。

技术分享图片

3.    进行点击列表中的port mapping中选项按钮。

技术分享图片

4.    然后在network port mapping中已经被选择为了socket level and winnet data,进行点击

技术分享图片

5.    弹出了下拉菜单中进行选择为socket level data的选项。

技术分享图片

6.    6

在此重新录制脚本之后可以看到的在脚本只有一个请求的脚本的。

技术分享图片

 

4       LR 实例分析

4.1              查询数据库的进程数。

现在已经超载了,所以weblogic建连接池建不了。程序报错。

Show parameter process;

Select count(*) from v$process;

技术分享图片

 

 

 

5       数据库分析

 

 

6       完成一个脚本时间

1)  录制脚本:去掉验证码、录制脚本、参数化、关联、事物、检查点、调试。一个简单的登陆15分钟。复杂的就看情况而定。

2)  场景运行:10个运行一次6分钟,50并发运行一次7分钟。100并发运行3次,24分钟。一切顺利的话,一个小时完成。因为脚本稍微中间要暂停几分钟,释放一下资源。

3)  分析结果:nmon报告、awr报告、lr分析结果。

4)  总结就是一个简单的登陆,顺利的话1个小时左右就完成了。

 

 

 

7       性能调优

需要现场提供的测试数据

 

7.1              服务器本身

机器的种类,内存,swap空间,和CPU的数量(核心数),

调整系统socket打开数,建议将open file size 也调大一些。

 测试系统I/0 是否存在I/O问题。

 

7.2              Jvm 参数优化(weblogic启动jvm内存设置)

 启动weblogic时设置jvm参数大小

 set JAVA_OPTS=-Xms4096m Xmx8192m 

需要确定当前系统物理内存和jdk版本及位(64 or 32

,

如果当前内存配置大于上述配置可先忽略。

 

7.3              weblogic

调优参数对Weblogic的调优主要从SEVERExecuteQueueJDBC等几个方面的相关参数进行调优:

 一、SERVER

 mydomain->Servers->myserver->Configuration->Tuning->Enable Native IO”中:

 1Native IOEnabled  TRUE,表示该Server使用本地I/O 

2SocketReaders 设置在执行线程中专用做Socket Readers的百分比

3Maximum Open Sockets 最大打开Socket

 4Stuck Thread MaxTime

 堵塞线程时间,超过这个时间没有返回的执行线程,系统将认为是堵塞线程。如果weblogic认为某个队列中的所有的线程全部堵塞的话,weblogic将会增加执行线程的数量。注意:执行线程的数量一旦增加,目前weblogic不会去减少他,如果增加了一些线程以后再次出现

overflow的警告,weblogic会继续增加执行线程的数量,一直到达到上限为止。

 例如可以改成:默认600 改成1200 

5Stuck Thread Timer Interval 

系统检查堵塞线程的时间间隔

6Low Memory GC Threshold 

当可用内存小于该百分比时,垃圾回收启动

7Low Memory Granularity Level 

当两次检测的可用内存变化超过该百分比时,垃圾回收启动

8Low Memory Sample Size 

在一次检测中的取样次数

 9Low Memory Time Interval 

检测间隔时间

10Accept Backlog 

等待队列中最多可以有多少TCP连接等待处理,如果在许多客户端连接被拒绝,而在服务器端没有错误显示,说明该值设得过低。如果连接时收到connection refused消息,说明应提高该值,每次增加25

 

7.4              ExecuteQueue

 mydomain->Servers->myserver ->Monitoring->Monitor all Active Queues... 

->Configuration->weblogic.kernel.Default-> 

 

1ThreadCount 

服务器初始创建的执行线程的数量,设置原则:

增大机器的最大并发线程数使处理器利用率达到最大,并发线程数理论上等于,够用即可,过大会降低系统性能。建议:查看当前配置,确定当前系统cpu核心数,可按每核心支持

20线程数进行配置。11g可能需要通过修改xml配置文件进行设置。

 2QueueLength 

在等待队列里的请求数,理想状态下是

 3QueueLength Threshold Percent 

一个百分数,当request的数量达到队列长度的这个比例的时候,weblogic会发出overflow

的标志信息

 4ThreadsIncrease 

如果weblogic发出overflow的标志信息,weblogic会尝试增加这个数量的执行线程,以解决

处理矛盾

 5ThreadsMaximum 

最大执行线程数

 6Threads Minimum 

最小执行线程数

7ThreadPriority 

线程优先级

 

7.5              JDBC

service->JDBC-> JDBC Connection Pools->Configuration->name->Connections 

1Initial Capacity 

初始数据库物理连接数

 建议设置为15-20之间

 2MaxCapacity 

最大数据库物理连接数

 根据数据库本身所支持的最大连接数进行设置,建议设置为数据库最大连接数的80%

 3Capacity Increment 

每次数据库物理连接增加数

 4Statement Cache Type 

prepared statements缓存的策略,LRU算法在有新的语句到来时,将最不经常被用得语

句调整出缓存。FIXED算法为先进先出的算法

 5TestConnectionsOnReserve 

 TestConnectionsOnReserve设置为false(缺省设置)。如果此参数设置为真(

true),则在连接被分配给调用者之前,都要经过测试,这会额外要求与数据库的反复连接

 6Statement Cache Size 

宏语句设定的静态缓存,大小由JDBC连接池配置时指定,调整这个数值的大小,有利于提高系统的效率调整缓存大小:

 7Login Delay 

创建数据库物理连接时的延时时间

 

7.6               监控日志

 1server log 

系统启动及运行过程中的日志,可在weblogic管理端中进行配置。

 2access log 

7.7               数据库优化(oracle

 目前可以调整的主要是数据库内存配置和最大连接数的基本配置,提高并发处理效率。 在进行测试时监测会话及连接等信息

 Select * from v$session

 Select * from v$session where status=ACTIVE;

 Select * from v$process; 

Select * from v$locked_object; 

 

建议调整SGA参数Data buffer,将其尽可能的调大些。避免重复查询的磁盘I/O操作。

 调整PGA参数设置原则:SGA+PGA+OS使用内存<总物理RAM

 在调试过程中可以观察PGA缓存设置命中率:

 select value from v$sysstat where name ='physical reads'; 

SQL> select value from v$sysstat where name ='physical reads direct'; 

SQL> select value from v$sysstat where name ='physical reads direct (lob)'; 

SQL> select value from v$sysstat where name ='consistent gets'; 

SQL> select value from v$sysstat where name = 'db block gets';

 

 

8       错误日志总结

7.1              错误-27727

Action.c(13):错误-27727: Step download timeout (120 seconds) has expired when downloading resource(s). Set the "Step Timeout caused by resources is a warning" Run-Time Setting to Yes/No to have this message as a warning/error, respectively

解决方案:修改“运行时设置-HTTP请求连接超时、HTTP请求接收超时”的值为600s或者更长时间

7.2              错误-27796

Action.c(39):错误-27796:连接服务器“test0105.s1.diy.com:80”失败: [10061] Connection refused

有可能是服务器有太多的数据库连接,提示连接被拒绝

解决方案:

可以让开发尝试调整:

1.数据库最大连接数;

2. tomcat的最大并发数限制

7.3              错误-27791

Action.c(9):错误-27791:服务器“test0105*.s1.diy.com”已过早关闭连接

访问时已经下载不到资源了,有可能是已经达到服务器资源的瓶颈了,可以查看服务器资源如CPU、负载等

4. Error -27791
Action.c(7): Error -27791:Server"10.10.0.88" has shut down the connection prematurely
借鉴51Testing网友提供的解决方案:
1)、应用服务器死掉。小用户时程序上的问题,程序上处理数据库的问题
2)、应用服务没有死。应用服务参数设置问题。例如:在许多客户端weblogic应用服务器被拒绝,而在服务器端没有错误显示,则有可能是weblogic中的server元素的acceptbacklog属性值设得过低。如果连接时收到connection refused消息,说明应提高该值,每次增加25%
3)、数据库的连接
在应用服务的性能参数可能太小了
数据库启动的最大连接数(跟硬件的内存有关)
4)、有时关闭防火墙如卡巴斯基也会解决如上问题

 

7.4                Error -27727

Step download timeout (120 seconds)has   expired when downloading resource(s). Set the“Resource Page Timeout is a   Warning” Run-Time Setting to Yes/No to have this message as a warning/error,   respectively

处理方法:
  Run-Time Setting ------ Internet Protocol ------ Preferences ------Option   ------ Step download timeout(sec)改为32000

A、应用服务参数设置太大导致服务器的瓶颈
B、页面中图片太多
C、在程序处理表的时候检查字段太大或多

 

7.5              Error -27728

 Step download timeout (120 seconds)has expired when downloading non-resource(s)

错误分析:对于HTTP协议,默认的超时时间是120秒(可以在LoadRunner中修改),客户端发送一个请求到服务器端,如果超过120秒服务器端还没有返回结果,则出现超时错误。

解决办法:首先在运行环境中对超时进行设置,默认的超时时间可以设置长一些,再设置多次迭代运行,如果还有超时现象,需要在"Runtime Setting">"Internet ProtocolPreferences">"Advanced"区域中设置一个"winlnet replay instead of sockets"选项,再回放是否成功。

 

7.6              Error -27791

Server“192.168.1.77″ has shut down the connection prematurely

解决方案如下:
1、应用服务器死掉。小用户时程序上的问题,程序上处理数据库的问题
2、应用服务没有死。应用服务参数设置问题。例如:在许多客户端weblogic应用服务器被拒绝,而在服务器端没有错误显示,则有可能是weblogic中的server元素的acceptbacklog属性值设得过低。如果连接时收到connection refused消息,说明应提高该值,每次增加25%
3、数据库的连接在应用服务的性能参数可能太小了,数据库启动的最大连接数(跟硬件的内存有关)
4、有时关闭卡巴斯基也会解决如上问题
  1)观察response time 是否 超出默认的120
  2)检查服务器日志是否有异常以及负载是否过高
  3 web_set_timeout 设置更长的超时超时上限
  如
  web.set_timeout(”CONNECT”, “360″);
  web.set_timeout(”RECEIVE”, “360″);
web.set_timeout(”STEP”, “360″))观察response time 是否 超出默认的120秒这个问题,要详细分析了。应该不会是LR自身造成的问题。把时间调长,就是为了,定位问题在什么地方,而不是为了绕过这个错误的出现。

 

7.7              Error -27492

"HttpSendRequest" failed, Windows error code=12002 andretry limit (0) exceeded for URL
runtime setting中的preferences-->options-->http-request connect timeout(sec)的值设为999

 

7.8              Error -27498

Timed out while processing

URL=http://172.18.20.70:7001/workflow/bjtel/leasedline/querystat/subOrderQuery.do

错误分析:这种错误常常是因为并发压力过大,服务器端太繁忙,无法及时响应客户端的请求而造成的,所以这个错误是正常现象,是压力过大造成的。

如果压力很小就出现这个问题,可能是脚本某个地方有错误,要仔细查看脚本,提示的错误信息会定位某个具体问题发生的位置。

解决办法:例如上面的错误现象问题定位在某个URL上,需要再次运行一下场景,同时在其他机器上访问此URL。如果不能访问或时间过长,可能是服务器或者此应用不能支撑如此之大的负载。分析一下服务器,最好对其性能进行优化。

如果再次运行场景后还有超时现象,就要在各种图形中分析一下原因,例如可以查看是否服务器、DNS、网络等方面存在问题。

最后,增加一下运行时的超时设置,在"Run-Time Settings">"InternetProtocol:Preferences"中,单击"options",增加"HTTP-request connect timeout" 或者"HTTP-requestreceive"的值。

7.9              Error -26612

HTTP Status-Code=500 (Internal Server Error)

 forhttp://192.168.0.8:10001/logonConsole.do;jsessionid={JSESSIONID2}

造成HTTP500错误,有朋友告诉我如下几个可能:

1、运行的用户数过多,对服务器造成的压力过大,服务器无法响应,则报HTTP500错误。减小用户数或者场景持续时间,问题得到解决。

2、该做关联的地方没有去做关联,则报HTTP500错误。进行手工或者自动关联,问题得到解决。

3、录制时请求的页面、图片等,在回放的时候服务器找不到,则报HTTP500错误,若该页面无关紧要,则可以在脚本中注释掉,问题将会得到解决。例如:有验证码的情况下,尽管测试时已经屏蔽了,但是录制的时候提交了请求,但回放的时候不存在响应。

4、参数化时的取值有问题,则报HTTP500错误。可将参数化列表中的数值,拿到实际应用系统中进行测试,可排除问题。

5、更换了应用服务器(中间件的更换,如tomcatwebspherejboss等),还是利用原先录制的脚本去运行,则很可能报HTTP500错误。因为各种应用服务器处理的机制不一样,所录制的脚本也不一样,解决办法只有重新录制脚本。

6Windows xp2 ISS组件不兼容,则有可能导致HTTP500错误。对ISS组件进行调整后问题解决。

7、系统开发程序写的有问题,则报HTTP500错误。例如有些指针问题没有处理好的,有空指针情况的存在。修改程序后问题解决。

查找后台日志发现报了很多0ra-01000错误,这是Oracle达到最大游标参数值,google了下,最大原因可能是JDBC连接没关闭。最后查找weblogic连接池出了问题,很多连接没关闭。

 

7.10        Error -27496

内部错误(呼叫客户服务): _eStat (7) !=LRW_ITEM_STAT_ENUM_UNHANDLED for HandledTask at 048E180C

 

7.11        Error -27995

Requested link ("Text=计划管理") not found [MsgId: MERR-27995]

方法:在IE中的工具—>Internet选项—>高级—>HTML设置中选择第二个脚本类型.

 

7.12        Error -27279

内部错误(呼叫客户服务):Report initialization failed , error code =-2147467259 [MsgId : MERR-27279 ]

建议重装一下LR.这种问题有可能和你安装有关.dll文件出错不是说写的程序就能修改的.

 

7.13        Error -27796

Failed to connect to server 'hostname';port_ld': 'reason'.10048.

成功的解决方法:
在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters里,有如下两个键值:
TcpTimedWaitDelay
MaxUserPort
1,这里的TcpTimedWaitDelay默认值应该中是30s,所以这里,把这个值调小为5s(按需要调整)。
2,也可以把MaxUserPort调大(如果这个值不是最大值的话)。

 

7.14        Error -10489

Exception was raised when calling per-thread-terminate function

在用Loadrunner实施性能测试时,采用Goal模式加压,存在如果持续长时加压时LoadRunnerController会报 Error -10489 : Exception wasraised when calling per-thread-terminate function错误;

问题产生原因:
Unlike the earlier Windows versions, Windows 2000 and Windows XP have thedefault environment set to C:\Document and Settings\<user-name>\LocalSettings\Temp instead of C:\Windows\temp. This long path with a space can causeseveral problems for LoadRunner. To resolve the issue, change to a directorywithout empty spaces.

解决方法:
C盘(或是其它盘均可以)新建TEMP文件夹(为了后续设置临时文件准备)
右键"我的电脑"->高级->环境变量->编辑修改TEMP变量目录,指身上面新建的目录,如我的指向C:\TEMP->保存即可^_^

1> 问题描述Connection reset by peer. Error code : 10054

设置下载等的超时

VuGen录制脚本后,回放或者加压的时候,可能会出现错误信息“Action.c(65): Error : socket6 - Connection reset by peer. Errorcode : 10054”

这是因为,下载的速度慢,导致超时,所以,需要调整一下超时时间,方法如下:

Run-timesetting窗口中的‘Internet Protocol’‘Preferences’设置set advanced options(设置高级选项),,重新设置一下“HTTP-requestconnect timeoutsec

2> 问题描述:

ErrorFailed to connect to server“192.168.2.192”[10060]Connection

Errortimed out ErrorServer“192.168.2.192”hasshut down the connection prematurely

原因:

1> 应用访问死掉

小用户时:程序上的问题。程序上存在数据库的问题

2> 应用服务没有死

应用服务参数设置问题

例如:

在许多客户端连接Weblogic应用服务器被拒绝,而在服务器端没有错误显示,则有可能是Weblogic中的server元素的AcceptBacklog属性值设得过低。如果连接时收到connection refused消息,说明应提高该值,每次增加25

Java连接池的大小设置,或JVM的设置等

3> 数据库的连接

在应用服务的性能参数可能太小了

数据库启动的最大连接数(跟硬件的内存有关)

3> 问题描述

ErrorPage download timeout120secondshas expired

分析原因:

应用服务参数设置太大导致服务器的瓶颈

页面中图片太多

在程序处理表的时候检查字段太多

 

7.15        Error -27492

"HttpSendRequest" failed, Windows error code=12002 andretry limit (0) exceeded for URL
runtime setting中的preferences-->options-->http-request connect timeout(sec)的值设为999
Runtime Setting>Preferences>Advanced区域中设置一个winlnet replay instead of sockets选项(不勾选此项报Error -27727

 

7.16        Error -27279

内部错误(呼叫客户服务):Report initialization failed , error code =-2147467259 [MsgId : MERR-27279 ]
警告:扩展 LrXml.dll报告在调用函数ExtPerThreadInitialize时出现错误 -1
错误: Vuser初始化扩展 LrXml.dll失败。
Vuser Terminated.

建议你重装一下LR.
这种问题有可能和你安装有关.dll文件出错不是说写的程序就能修改的.

 

7.17        Error -10061

Connection refused

在用loadrunner进行并发测试时,[10061]Connection refused,是服务器拒绝,一种方案是调整服务器的请求数。但是,有时候是服务器拒绝对同一个ip的多次请求,这时调整服务器不好实现,可以财用ip欺骗来防止10061的产生,这也是本文讨论的主题。

Ip欺骗的步骤:

1。添加ip2种方法:1种方法是使用loadrunnerIp Wizard进行----打开ipwizard后按提示进行操作,没什么问题,只是需要重起下机器(小技巧:如果你在使用前,把loadrunner关闭,把agent关闭,把网卡禁用,然后使用Ip wizard后再去启动网卡、agent,则可以不重起机器);还一种方法是自己手动添加,打开本地连接,打开Tcp/ip设置(我相信能看到这的人是打开这些是不成问题的),打开高级,然后添加ip

2。在Controller里设置ip欺骗:在Controller中点击菜单scenario,选择"Enable Ip Spoofer",这就打开了Ip欺骗,对于Ip欺骗的设置,先在菜单Tools下选上"Expert Mode"选项用于打开专家模式(感觉没有什么特殊,无非就是是后面的Options弹出的对话框多了几个选项卡),然后选择Tools下的Options,打开对话框,找到General,这时可以选择Ip欺骗的方式:为每个Process还是Thread产生ip

3。设置场景时,多设计几组VUser(可以是针对一个叫本,每组Vuser使用一个ip,这样又多少组就是用多少组ip)。

Ok,运行场景吧,这时发出去的包是进行Ip欺骗的,想要验证的话,不妨把下面的代码放入你的叫本任意位置(当然是要能执行到的位置,不妨放在Action的开始部分,对脚本的运行没有影响)

char *ip=lr_get_vuser_ip();
if(ip){
lr_log_message("The ip address is %s",ip);
}else{
lr_log_message("IP spoofing disabled");
}

然后在运行场景前,选择几组Vuser,在后边点击"Run-TimeSetting"进行设置,这里要设置的是General--Log下,选中Enable LoggingAlways send messages,这样运行场景后你可以查看Vuser使用的Ip(在运行场景后,点击"Vusers...",打开Vuser信息,在弹出框左上找到Log日志按钮,然后可以看到该组Vuser的运行信息,在里面可以看到使用的ip信息)。

补充:这么做是在发包时进行欺骗,但是网卡的MAC地址不会变,如果发出去的包经过DHCP(动态路由)时,欺骗就被揭发了--总之就是不成功了,因为DHCP服务器 会根据package来自的mac地址在dhcp路由器中的ip影射表里找到网卡的真实ip然后转发出去(含有个人推测,若有错误,请纠正),因此如果被测试的服务器在外网而你所在的网段使用了DHCP路由,我也没脾气了(暂时不知道怎么处理),但是如果被测服务器和你在同一个网内,ok,可以解决,思路:把服务器的网关地址指向你的测试机器,然后使用不同于局域网中的网段,例如:公司使用的是DHCP,并且使用192.168.0.X的网,可以把测试机器ip改成192.168.10.1,掩码255.255.255.0,网关指向自己192.168.10.1,然后把被测服务器ip改成:ip192.168.10.250,掩码255.255.255.0,网关192.168.10.1ok,在测试机器上添加ip,使用192.18.10.X,然后开始测试吧。

 

7.18        LoadRunner脚本中出现乱码

在录制Web协议脚本时出现中文乱码,在回放脚本时会使回放停止在乱码位置,脚本无法运行。

错误现象:某个链接或者图片名称为中文乱码,脚本运行无法通过。

错误分析:脚本录制可能采用的是URL-based script方式,如果程序定义的字符集合采用的是国际标准,脚本就会出现乱码现象。

解决办法:重新录制脚本,在录制脚本前,打开录制选项配置对话框进行设置,在"Recording Options""Advanced"选项里先将"Surport Charset"选中,然后选中支持"UTF-8"的选项。

 

7.19        LoadRunner HTTP服务器状态代码

在录制Web协议脚本回放脚本的过程中,会出现HTTP服务器状态代码,例如常见的页面-404错误提示、-500错误提示。

错误现象1-404 Not Found服务器没有找到与请求URI相符的资源,但还可以继续运行直到结束。

错误分析:此处与请求URI相符的资源在录制脚本时已经被提交过一次,回放时不可再重复提交同样的资源,而需要更改提交资源的内容,每次回放一次脚本都要改变提交的数据,保证模拟实际环境,造成一定的负载压力。

解决办法:在出现错误的位置进行脚本关联,在必要时插入相应的函数。

错误现象2-500 Internal Server Error服务器内部错误,脚本运行停止。

错误分析:服务器碰到了意外情况,使其无法继续回应请求。

解决办法:出现此错误是致命的,说明问题很严重,需要从问题的出现位置进行检查,此时需要此程序的开发人员配合来解决,而且产生的原因根据实际情况来定,测试人员无法单独解决问题,而且应该尽快解决,以便于后面的测试。

 

7.20        LoadRunner请求无法找到

在录制Web协议脚本回放脚本的过程中,会出现请求无法找到的现象,而导致脚本运行停止。

错误现象:Action.c(41):Error -27979: Requested form not found [MsgId: MERR-27979]

Action.c(41): web_submit_formhighest severity level was "ERROR",0 body bytes, 0 header bytes[MsgId: MMSG-27178]"

这时在tree view中看不到此组件的相关URL

错误分析:所选择的录制脚本模式不正确,通常情况下,基于浏览器的Web应用会使用"HTML-based script"模式来录制脚本;而没有基于浏览器的Web应用、Web应用中包含了与服务器进行交互的Java Applet、基于浏览器的应用中包含了向服务器进行通信的JavaScript/VBScript代码、基于浏览器的应用中使用HTTPS安全协议,这 时则使用"URL-based script"模式进行录制。

解决办法:打开录制选项配置对话框进行设置,在"Recording Options""InternetProtocol"选项里的"Recording"中选择"Recording Level""HTML-basedscript",单击"HTML Advanced",选择"Script Type""A scriptcontaining explicit"。然后再选择使用"URL-basedscript"模式来录制脚本。

 

7.21        LoadRunner不执行检查方法

在录制Web协议脚本中添加了检查方法Web_find,但是在脚本回放的过程中并没有执行。

错误现象:在脚本中插入函数Web_find,在脚本中设置文本以及图像的检查点,但是在回放过程中并没有对设置的检查点进行检查,即Web_find失效。

错误分析:由于检查功能会消耗一定的资源,因此LoadRunner默认关闭了对文本以及图像的检查,所以在设置检查点后,需要开启检查功能。

解决办法:打开运行环境设置对话框进行设置,在"Run-time Settings""InternetProtocol"选项里的"Perference"中勾选"Check"下的"Enable Image andtext check"选项。

 

7.22        LoadRunner回放Web Services协议脚本错误

LoadRunner 8.0版本在录制Web Services协议的脚本时正常,但在回放时会出现错误,提示停止脚本运行。

错误现象:利用LoadRunner8.0版本来录制Web Services协议的脚本没有任何错误提示,回放脚本时会出现如下错误提示"Errorserver returned an incorrectlyformatted SOAP response"

错误分析:出现此错误的原因是LoadRunner8.0在录制Web Services协议的脚本时存在一个缺陷:如果服务器的操作系统是中文的,VuGen会自动将WSDL文件的头改为<?xmlversion="1.0"encoding="zh_cn" ?>,所以才会有此错误提示。

解决办法:下载两个补丁,分别为"LR80WebServicesFPI_setup.exe""lrunner_web_services_patch_1.exe"安装上即可。

http://wenku.baidu.com/view/a576eb0a79563c1ec5da71c8.html

 

7.23        业务

进入借款单(显示借款单列表),新建借款单,新建后显示借款单列表(新建的借款单在此列表中有显示)
我是录制的脚本,可运行时,提示 Action.c(112):错误-26627:对于http://192.168.1.105:8080/T3/fee/feeLoanList.actionHTTP状态代码=404 (Not Found)

解决:

说两点:
1.手动正常未必就真正常,LR加压的时候可能连接数占满了,所以出404
2.还有一种情况,脚本里有检查语句,叫什么lr_check还是什么的,就是一个脚本内部检查是否有该资源用的,不见着他我拼不出来,如果有,注释掉看看

 

7.24        Controller里运行脚本,运行一段时间以后出现如下error messages

1. Code -60990 Error: Two Way Communication Error: Function two_way_comm_post_message /two_way_comm_post_message_ex failed.

2. Code -29739 Error: Service client with id=1 failed to post a message, reason -communication error.

3. Code -16895 Error: Failed to post xdr buffers data array by post_ex.

4. Code -10343 Error: Communication error: Cannot send the message since reached theshared memory buffer max size.

问题诱因1

共享内存缓存溢出,造成ControllerLoad Generator之间通讯出现问题。

解决方案:

修改两个配置文件。

1.$installation folder$\dat\channel_configure.dat

2. $installationfolder$\launch_service\dat\channel_configure.dat

在这两个文件中的[general]部分下添加如下配置。

shared_memory_max_size=100(修改共享内存为100MB,默认是50MB)

重新启动Controller,问题解决。

问题诱因2

打开 controller中的 diagnostics菜单,点掉复选框..步骤如下图

2. 点掉 Enable the following diagnostics


总结——LR学习总结

标签:性能测试

原文地址:http://blog.51cto.com/13693838/2095928

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!