Loadrunner小知识积累

 http://blog.csdn.net/achang21/article/details/11702249?utm_source=jiancool


专门发一个日志,作为Loadrunner小知识积累和总结,记录Loadrunner中我们经常注意不到的知识,对自己是一个提高,也希望把知识和经验分享给更多的人......

1.lr_think_time默认是没有启用。所以我们在执行测试或在回放的时候启用它。具体操作为:Vugen--》Vuser---》Runtime-settings-----》thinktime-----》选中Replay thinktime,其他设置根据实际需要。
关于thinktime的一个详细的介绍和用法,见:http://www.testage.net/html/19/n-155019.html
2.设置Rendezvous的时间。

    在Controller中,Scenarioc菜单-----》Rendezvous 进入就可看到目前脚本中的各个集合点,选中一个,然后点击“Policy”进入后,就可以设置集合点的属性,Rendezvous默认为30秒,可以重新设置成自己期望的值。

3.Step download timeout(sec) 设置。

    这个默认是120秒,但是经常我们要设置的更大一些,具体设置方法:Vugen--》Vuser---》Runtime-settings----》Preferences------》option,将Step download timeout(sec)默认值120s改为自己需要的值,其次要改变HTTP-reguest connnect timeout(sec)和HTTP-reguest receive timeout(sec)也为相应的值。


4.修改本机tcp连接数。

   因为个人pc机的默认的tcp连接数只有15个(xp),所以我们在模拟虚拟多个用户时,就会遇到tcp的连接限制,从而报错。修改的方法:windows下运行 Patch.exe
输入C,再输入你要的TCP/IP连接数字(一般为500~2000)回车确认
输入Y 回车确认。
倒计时15秒后结束。
接着再运行下Patch.exe,看连接数是不是由原来的10变成自己改了的数值。
Patch.exe 下载地址:http://www.touchboy.cn/2007/05/%E4%BF%AE%E6%94%B9windows-xp2003-%E7%9A%84tcpip%E8%BF%9E%E6%8E%A5%E6%95%B0/

6.对LR中报WSA_IO_pending的解析和解决

Message Code 27740

Overlapped transmission of request to '%1' for URL 'URL' failed.

The transmission of data to the server failed. It could be a network, router, or server problem. The word Overlapped refers to the way LoadRunner sends data in order to get a Web Page Breakdown.

Troubleshooting
Add the following statement to the beginning of the script to disable the breakdown of the "First Buffer" into server and network time: web_set_sockets_option("OVERLAPPED_SEND", "0");

 

web_set_sockets_option("OVERLAPPED_SEND", "0");

7.关于Error -27791: Error -27790:Error -27740:错误的解决方法:

错误如下:

Action.c(198): Error -27791: Server "www.zcpx.cn" has shut down the connection prematurely
Action.c(198): Error -27790: Failed to read data from server "
www.zcpx.cn": [10053] Software caused connection

abort
Action.c(198): Error -27740: Overlapped transmission of request to "
www.zcpx.cn" for URL

"http://www.zcpx.cn/userEntry.do" failed: WSA_IO_PENDING

 

解决办法:

在脚本的最前面加上web_set_sockets_option("OVERLAPPED","0");

 

8.LR中错误代号为27796的一个解决方法

问题:
曾经遇到过一个问题,在一次性能测试过程中,使用http协议的多用户向服务器发送请求。设置了持续时间,出现错误为:27796, Failed to connect to server 'hostname';port_ld': 'reason'.10048。

分析
因为负载生成器的性能太好,发数据包特别快,服务器也响应特别快,从而导致负载生成器的机器的端口在没有timeout之前就全部占满了。在全部占满后,就会出现上面的错误。执行netstat –na命令,可以看到打开了很多端口。所以就调整TCP的time out。即在最后一个端口还没有用到时,前面已经有端口在释放了。

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

.......

9.检查点一点说明;

web_reg_find();web_find();web_image_check();如果通过为返回值为1,反之为0;

举例:

f=web_image_check("1211873417140.jpg","",LAST);
if (f=1)
{lr_output_message("测试通过f=%d",f);}
else
{lr_output_message("测试不能通过f=%d",f);}

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

10.以时间定义事务成败

double time_elapsed, duration, waste; 
merc_timer_handle_t timer; 
Action()
{
lr_start_transaction("ACCP");
timer = lr_start_timer(); 
lr_think_time(3);
time_elapsed = lr_end_timer(timer); 
// Convert to millisecond.s 
waste = time_elapsed * 1000; 
if(waste>3)
lr_end_transaction("ACCP", LR_FAIL);
else
lr_end_transaction("ACCP", LR_PASS);
return 0;
}
 
1、Action.c(6): Error -27791: Server "172.16.16.222" has shut down the connection prematurely

1、tomcat未进行内核优化的版本(公共版)最多只能支持200用户,超过了就会不稳定,减小用户数的时候,他就不会这个错误
2、27791--指服务器过早关闭连接错误,造成的原因是由于服务器的配置不好引起的,若调整不好,就要优化程序和硬件了
3、tomcat的server.xml中连接器设置如下:
<</span>Connector port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"
redirectPort
="8443"
maxThreads
="800" acceptCount="1000"/>

maxThreads:tomcat起动的最大线程数,即同时处理的任务个数,默认值为200
acceptCount:当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100



2、Action.c(6): Error -27740: Overlapped transmission of request to "172.16.16.222" for URL ""failed: WSA_IO_PENDING 

 
 
在脚本前添加如下语句可以解决
web_set_sockets_option("OVERLAPPED_SEND", "0");

3、Error: Two Way Communication Error: Function two_way_comm_post_message / two_way_comm_post_message_ex failed.
4、Error: Failed to deliver a p2p message from parent to child process, reason - communication error.

这两个错误没有导致事物失败,暂时可以忽略。

  一、Step download timeout (120 seconds)
这是一个经常会遇到的问题,解决得办法走以下步骤:
1、修改run time setting中的请求超时时间,增加到600s,其中有三项的参数可以一次都修改了,HTTP-request connect timeout,HTTP-request receieve timeout,Step download timeout,分别建议修改为600、600、5000。run time setting设置完了后记住还需要在control组件的option的run time setting中设置相应的参数。
2、办法一不能解决的情况下,解决办法如下:
设置runt time setting中的internet protocol-preferences中的advaced区域有一个winlnet replay instead of sockets选项,选项后再回放就成功了。切记此法只对windows系统起作用,此法来自zee的资料。  
   
二、问题描述Connection reset by peer.
这个问题不多遇见,一般是由于下载的速度慢,导致超时,所以,需要调整一下超时时间。
解决办法:Run-time setting窗口中的‘Internet Protocol’-‘Preferences’设置set advanced options(设置高级选项),重新设置一下“HTTP-request connect timeout(sec),可以稍微设大一些”。
   
三、问题描述connection refused
这个的错误的原因比较复杂,也可能很简单也可能需要查看好几个地方,解决起来不同的 操作系统方式也不同。
1、首先检查是不是连接weblogic服务过大部分被拒绝,需要监控weblogic的连接等待情况,此时需要增加acceptBacklog,每次增加25%来提高看是否解决,同时还需要增加连接池和调整执行线程数,(连接池数*Statement Cache Size)的值应该小于等于oracle数据库连接数最大值。
2、如果方法一操作后没有变化,此时需要去查看服务器操作系统中是否对连接数做了限制,AIX下可以直接vi文件limits修改其中的连接限制数、端口数,还有tcp连接等待时间间隔大小,wiodows类似,只不过windows修改注册表,具体修改注册表中有TcpTimedWaitDelay和MaxUserPort项,键值在[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\]。因为负载生成器的性能太好,发数据包特别快,服务器也响应特别快,从而导致负载生成器的机器的端口在没有timeout之前就全部占满了。在全部占满后,就会出现上面的错误。执行netstat –na命令,可以看到打开了很多端口。所以就调整TCP的time out。即在最后一个端口还没有用到时,前面已经有端口在释放了。
1,这里的TcpTimedWaitDelay默认值应该中是30s,所以这里,把这个值调小为5s(按需要调整)。
2,也可以把MaxUserPort调大(如果这个值不是最大值的话)。
   
四、问题描述open many files
问题一般都在压力较大的时候出现,由于服务器或者应用中间件本身对于打开的文件数有最大值限制造成,解决办法:
1、修改操作系统的文件数限制,aix下面修改limits下的nofiles限制条件,增大或者设置为没有限制,尽量对涉及到的服务器都作修改。
2、方法一解决不了情况下再去查看应用服务器weblogic的commonEnv.sh文件,修改其中的nofiles文件max-nofiles数增大,应该就可以通过了,具体就是查找到nofiles方法,修改其中else条件的执行体,把文件打开数调大。修改前记住备份此文件,防止修改出错。
3、linux上可以通过ulimit –HSn 4096来修改文件打开数限制,也可以通过ulimit -a 来查看。
4、linux上可以通过lsof -p pid | wc -l 来查看进程打开的句柄数。
   
五、问题描述has shut down the connection prematurely
一般是在访问应用服务器时出现,大用户量和小用户量均会出现。
来自网上的解释:
1>应用访问死掉
小用户时:程序上的问题。程序上存在数据库的问题
2>应用服务没有死
应用服务参数设置问题
例如:
在许多客户端连接Weblogic应用服务器被拒绝,而在服务器端没有错误显示,则有可能是Weblogic中的server元素的AcceptBacklog属性值设得过低。如果连接时收到connection refused消息,说明应提高该值,每次增加25%
Java连接池的大小设置,或JVM的设置等
3>数据库的连接
在应用服务的性能参数可能太小了
数据库启动的最大连接数(跟硬件的内存有关)
以上信息有一定的参考价值,实际情况可以参考此类调试。
如果是以上所说的小用户时:程序上的问题。程序上存在数据库的问题,那就必须采用更加专业的工具来抓取出现问题的程序,主要是程序中执行效率很低的sql语句,weblogic可以采用introscope定位,期间可以注意观察一下jvm的垃圾回收情况看是否正常,我在实践中并发500用户和600用户时曾出现过jvm锯齿型的变化,上升下降都很快,这应该是不太正常的。
---------------------------------------
实际 测试中,可以用telent 站点看看是否可以连接进去,可以通过修改连接池中的连接数和适当增加应用内存值,问题可以解决。
   
六、问题描述Failed to connect to server
这个问题一般是客户端链接到服务失败,原因有两个客户端连接限制(也就是压力负载机器),一个网络延迟严重,解决办法:
1、修改负载机器注册表中的TcpTimedWaitDelay减小延时和MaxUserPort增加端口数。注:这将增加机器的负荷。
2、检查网络延迟情况,看问题出在什么环节。
建议为了减少这种情况,办法一最好测试前就完成了,保证干净的网络环境,每个负载机器的压力测试用户数不易过大,尽量平均每台负载器的用户数,这样以上问题出现的概率就很小了。
   
七、问题描述Overlapped transmission of request to ... WSA_IO_PENDING
这个问题,解决方法:
1、方法一,在脚本前加入web_set_sockets_option("OVERLAPPED_SEND", "0"),禁用TTFB细分,问题即可解决,但是TTFB细分图将不能再使用,附图。

2、方法二,可以通过增加连接池和应用系统的内存,每次增加25%。
   
八、问题描述Deleted the current transaction ... since response time is not accurate
这个问题不多遇见,一般出现在压力机器上发生ping值为负数(AMD双核CPU),可以重新启动pc机或者打补丁,附图。

九、问题描述HTTP Status-Code=500 (Internal Server Error) for
1、应用服务当掉,重新启动应用服务。
2、当应用系统处于的可用内存处于阀值以下时,出现HTTP Status-Code=500的概率非常高,此时只要增加应用系统的内存,问题即可解决。
                                                
十、问题描述Failed to transmit data to network: [10057]Socket is not connected
这个错误是由网络原因造成的,PC1和PC2上面都装了相同的loadrunner 9.0,且以相同数量的虚拟用户数运行相同的业务(机器上的 其他条件都相同),PC1上面有少部分用户报错,PC2上的用户全部执行通过。


十一、问题描述 Error -27257: Pending web_reg_save_param/reg_find/create_html_param[_ex] request(s) detected and reset at the end of iteration number 1
解决方法:web_reg_save_param位置放错了,应该放到请求页面前面。
                                 
十二、问题描述 通过Controler调用远程代理时报错,Error: CCI security error:You are running under secure mode and the function system is not allowed in this mode.
解决方法:在代理开启的时候,去掉勾选防火墙选项。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值