友善交流技术...

发布新日志

  • loadrunner性能分析-线程holding(死锁)

    2012-04-18 14:29:36

    性能分析-线程holding状态,系统无反映

    测试系统:公司开发的平台系统

    开发语言:java+c

    数据库  :mysql

    测试描述:

      测试功能:测试5个接口

      并发用户:20并发,运行30分钟

    实际结果

    1、监控tomcat 发现大量的线程 holding 状态

    2、java 线程都处于等待状态(应该是死锁),线程池被使用完。

    经过分析通过几个修改方案

    分析方法:脚本拆分法,确定那个功能引起的线程holding

      将loadrunner脚本一个一个运行,结果发现任务的接口都可以引起线程holding状态的出现,这说明了不是一个接口出现了问题,而是所有的接口都会引起线程holding的出现,进而分析可能的原因:

       共同的功能模块出现问题:共同的模块应该是锁或是DB调用的公共模块出现问题。和开发一起分析,现在只有JAVA有锁,通过JNI调用C,这说明JAVA锁出现了问题。分析到这后,尝试的解决办法是:

       a)修改JAVA锁 -》结果验证失败

       b)增加C语言中超时时间,设置10秒自动断开链接->结果失败  

       c)让C来进行加锁来实现-》结果成功 

    经验总结:

       综合场景发现了问题,不太容易定位问题是那个功能或是接口引起时,建议单接口进行压力测试,如果再次出现本问题说明了:公共模块出现了问题,让开发注意公共模块,一般都是锁或是DB调用什么的。

     

  • loadruner 学习资源(转)

    2012-04-18 10:12:56

    Read First

    What is Load Testing (10 Pages)
    C:\Program Files\HP\LoadRunner\help\Learn_More_Testing.pdf

    HP LoadRunner Quick Start (30 Pages)
    C:\Program Files\HP\LoadRunner\tutorial\LR_QuickStart.pdf

    Tutorial (150 Pages)
    C:\Program Files\HP\LoadRunner\tutorial\Tutorial.pdf

    User Guides

    Virtual User Generator (1420 Pages)
    C:\Program Files\HP\LoadRunner\help\vugen.pdf

    Controller (552 Pages)
    C:\Program Files\HP\LoadRunner\help\Cntrl_pc.pdf

    Analysis (676 Pages)
    C:\Program Files\HP\LoadRunner\help\analysis.pdf

    Online Monitoring Reference (402 Pages)
    C:\Program Files\HP\LoadRunner\help\online.pdf

    Additional Reading

    Installation Guide (80 Pages)
    C:\Program Files\HP\LoadRunner\help\install.pdf

    Monitoring Best Practices (248 Pages)
    C:\Program Files\HP\LoadRunner\help\Monitoring_BP.pdf

    Flex Protocol Enhancements (12 Pages)
    C:\Program Files\HP\LoadRunner\dat\Flex.pdf

    Thats 3580 Pages of information on LR – How many pages have you gone through? (I probably did less than 1500)

    The above can also be found in Compiled Help Files. A couple like the Automation and Function reference are not found in the PDFs above, so it makes sense to list out the locations of these.

    CHM Files

    Everything from the above PDF listing
    C:\Program Files\HP\LoadRunner\bin\online.chm

    Function Reference
    C:\Program Files\HP\LoadRunner\bin\FuncRef.chm

    C Language function ref
    C:\Program Files\HP\LoadRunner\bin\c_language_FuncRef.chm

    Automation Reference (dont even go there)
    C:\Program Files\HP\LoadRunner\bin\automation.chm

    Well thats with the Documentation on your PC.

    ————————————————————-

    Now for the online stuff. Remember, many of your queries can be solved by using the search functionality at any of the following sites. Make it a habit to devote time every week to go through the latest posts, and it will make quite a good difference in your learning path.

    Email Lists:
    http://tech.groups.yahoo.com/group/loadrunner/
    http://groups.google.com/group/LR-LoadRunner
    http://tech.groups.yahoo.com/group/Advanced-LoadRunner/ (very little activity there – only for experienced users)

    Discussion Boards:
    http://www.sqaforums.com/postlist.php?Cat=0&Board=UBB6 (ofcourse!)
    http://forums13.itrc.hp.com/service/forums/categoryhome.do?categoryId=915 (HP Perf Center Forum)
    http://www.bish.co.uk/forum/index.php?board=2.0 (Richard Bishop)

    White Papers / Presentations:
    HP LoadRunner tips and tricks
    https://h10078.www1.hp.com/bto/download/loadrunner-configuration.pdf
    Performance Center New Features:
    http://hpbroadband.com/(S(vlbj3h3h2ej4qane0gsonc55))/program.aspx?key=5831MtEPC7May2009
    LR Compiler
    http://www.loadtester.com/under-hood-loadrunner-compiler

    Blogs:
    Official HP Blog: http://www.communities.hp.com/online/blogs/loadrunner/default.aspx
    Scott Moore, Tim Chase et al http://www.loadtester.com/blog
    Alexander Podelko http://www.testingreflections.com/blog/67
    Stuart Moncrieff http://www.myloadtest.com/ & http://www.jds.net.au/tag/loadrunner/
    Dmitry Motevich http://motevich.blogspot.com/ (includes video tutorials)
    papayamilkshake/Hwee Seong Tan http://www.loadrunnertnt.com/tag/loadrunner/
    Kim Sandell http://ptfrontline.wordpress.com/category/loadrunner/
    Richard Bishop http://www.bish.co.uk/index.php?option=com_content&view=category&id=34:recent&Itemid=1

    Wilson Mar: (deserves a seperate heading of his own – not a blog – but additional reading)
    LoadRunner Architecture http://www.wilsonmar.com/1loadrun.htm
    VUScripting http://www.wilsonmar.com/1lrscript.htm
    VTS http://www.wilsonmar.com/1mercvts.htm
    AJAX RIA web app load testing using LoadRunner http://www.wilsonmar.com/ajax_rec.htm
    Results Explorer http://www.wilsonmar.com/lrexplore.htm

    Twitter Feeds
    Coming Soon

    Protocol & Application Specific Resources

    AJAX c & s
    http://www.wilsonmar.com/ajax_rec.htm

    Flex, AMF
    http://hpbroadband.com/(S(3uelw04503pkjo55saxzlofd))/program.aspx?key=5831LoadRunner24March10

    CITRIX
    CITRIX document (for LR7.51)
    http://www.ccaheaven.com/wps/Mercury%20Interactive’s%20LoadRunner%20for%20Citrix.pdf
    Tim Chase CITRIX Scripting Best Practices
    http://www.loadtester.com/whitepapers/Citrix_LoadRunner.pdf
    Scott Moore’s CITRIX Scripting Tips
    http://www.loadtester.com/citrix-tips-2007-part-1

    Remedy ARS
    From JDS http://www.jds.net.au/tech-tips/vugen-scripting-for-remedy/

    Misc stuff
    LoadRunner VuGen to JMeter conversion
    http://www.performanceengineer.com/blog/lr2jm-convert-loadrunner-scripts-to-jmeter/
    Various Links : http://loadtester.tumblr.com/

    Certification Information:
    http://h20546.www2.hp.com/main/americas/certification/?sitepick=PT (General Info)
    http://www.hp.com/partnerlearning/learner_id.html (HP Learner ID)
    https://ibt1.prometric.com/index.asp?ibt=9710657000& (Prometric Id)
  • 性能分析常见图形

    2012-04-13 12:42:44

    Loadrunner 常见性能图形

    罗列出常见的性能图表。

  • mysql分页SQL性能对比

    2011-12-19 20:03:47

     为了验证网上说的分页SQL语句性能的好与坏,现在做一个对比测试

    1、场景描述:

       1)、测试单个表数据 680万

       2)、表结构一样

       3)、数据库 mysql5.5

    2、测试结果  

    2.1)比较好分页语句

    SELECT * FROM score s WHERE s.id > 4000000 ORDER BY s.id LIMIT 10 ;

    执行时间为:  0.02322秒左右 

     

    2.2)比较差的分页语句

     

    SELECT * FROM score WHERE  sid = 2 AND id >= (

    SELECT id FROM score ORDER BY id LIMIT 4000000, 1

    ) LIMIT 10 ;    

    执行时间为: 4.88秒左右

     

    2.3)比较差的语句

     

    SELECT * FROM  score S ORDER BY S.id  LIMIT 4000000,10 

    .266秒左右

     

    3、结论:

      

       其实SQL语句优化还是比较重要的,好的SQL语句可以提升系统不少的性能,但是第一个SQL语句,如果s.id 不是连续的,使用起来还是比较困难吧。个人感觉。。。

     

       实践是检验真理的唯一方法,不实践就没有发言权!

    欢迎大家讨论,对知识有自己的看法。。。

  • Nginx and apache 性能测试对比

    2011-12-17 00:15:03

    Nginx and apache 性能测试对比 
       总体的感觉Nginx性能在静态页面处理能力上,还是比apache性能好一点,性能大概在18%左右的差距。本次小测试只是为了比较那个软件在默认参数情况下的性能表现。下面看我的总体测试结果。
    1、测试目的
      测试apache ,Nginx在静态页面下,性能对比
    2、场景描述
      并发: 20用户
      运行时间:05分:19秒
      脚本:  分别打开静态页面,页面内容都相同
      测试硬件:都一样的
    3、测试结果
    +++++++++++++++++++++++++++++
    系统资源使用率
    ngnix  cpu :   100%  mem: 1.24-1.19   thread : 2
    apache cpu :   100%   mem: 1.09-1.15G thread :  2 httpd.exe
    +++++++++++++++++++++++++++++
    TPS:           ngnix:390-990      apache: 711-730
    响应时间:     ngnix:0.011      apache: 0.014s
    网络吞吐量:  ngnix: 170000-420000     apache: 314600-314900Byte
    事务总量 :  ngnix: 263027     apache: 222795
    运行时间:   ngnix:05:19      apache: 05:19
    4、Loadrunner统计结果
     
     
  • uptime load average 真实含义

    2011-12-09 10:35:14

    系统平均负载被定义为在特定时间间隔内运行队列中的平均进程树。如果一个进程满 足以下条件则其就会位于运行队列中:  

    - 它没有在等待I/O操作的结果  

    - 它没有主动进入等待状态(也就是没有调用'wait')   

    - 没有被停止(例如:等待终止)  

     例如: root@CMS3:~# uptime
     10:38:20 up 115 days, 17:16,  4 users,  load average: 17.03, 17.04, 17.00

    命令输出的最后内容表示在过去的1、5、15分钟内运行队列中的平均进程数量。  

    一般来说只要每个CPU的当前活动进程数不大于1那么系统的性能就是良好的,如 果每个CPU的任务数大于1,那么就表示这台机器的性能有严重问题。

    对 于上面的例子 来说,假设系统有4个CPU,那么其每个CPU的当前任务数为:17/4=4.25。这表示该系统的性能已经出现了问题的,通过查看cpu使用情况发现,


    PID USER PR NI VIRT RES SHR S %CPU %MEM COMMAND                                    
    4970 root  20  0 1498m 739m 9420 S  401 18.3  /usr/bin/java -Djava.util.logging.config.file=/usr/lo

    java 进程使用CPU的比例在 401%这说明了4个CPU全部让这个服务给占用了。

    这种情况下,说明了系统已经出现了瓶颈点,这个点是什么?至少说CPU已经承受不了,具体的原因,可能是在代码上面或是压力过大造成的,要分析了。至少通过监控,发出了CPU,已经是本次测试的瓶颈点。 

     

    再看一个没有压力情况下的系统的负载情况

     

     root@CMS1:~# uptime
     10:59:23 up 36 days, 17:57,  9 users,  load average: 0.09, 0.11, 0.09

    大家看一下这个没有压力情况下, load average: 0.09, 0.11, 0.09  也是四个CPU的系统,负载情况

     

    在Linux系统中,uptime、w、top等命令都会有系统平均负载load average的输出

  • siege-2.70 web 测试小工具

    2011-11-29 15:47:25

    1、siege-2.70 下载地址:http://www.joedog.org/pub/siege/

    安装: ./configure

          make && make install

    使用方法: siege ./siege -c 500 -r 150 -f sites.list -i -b -c 500

     并发500个用户

    -r 150 重复循环150次

    -f sites.list 任务的URL列表

    其它实用参数:

    -i 随机 URL ,默认是从列表的上面到下面来打压力

    -b 进行压力测试,不进行延时

  • Netperf是一种网络性能的测量工具

    2011-11-29 15:24:45

    Netperf概况  Netperf是一种网络性能的测量工具,主要针对基于TCPUDP的传输。Netperf根据应用的不同,可以进行不同模式的网络性能测试,即批量数据传输(bulk data transfer)模式和请求/应答(request/reponse)模式。Netperf测试结果所反映的是一个系统能够以多快的速度向另外一个系统发送数据,以及另外一个系统能够以多块的速度接收数据。

      Netperf工具以client/server方式工作。server端是netserver,用来侦听来自client端的连接,client端是netperf,用来向server发起网络测试。在client与server之间,首先建立一个控制连接,传递有关测试配置的信息,以及测试的结果;在控制连接建立并传递了测试配置信息以后,client与server之间会再建立一个测试连接,用来来回传递着特殊的流量模式,以测试网络的性能。

    安装

    unbunt

    1、apt-get install netperf

    or

    1、./configure

    2、make && make install

    使用

    netperf -H ip -P 12865 -l 60 -f file.txt

    参数说明:

    1、—H 加主机名称

    2、-P 设置断口:但是默认是 12865 ,本端口好像不可以修改的

    3、-f 增加文件: 可以通过文件的拷贝方式来测试网络流量

    4、-l 设置测试时间,默认是10秒左右

     

    本工具作用:

       可以测试网络的带宽,网络的流量,还是比较真实的,原理很简单,通过socket 协议,部属一个服务器(就是被测试机),再部属一个客户端,发送请求到服务器,以此来查看网络的带宽。

  • loadrunner 测试web service

    2011-09-27 15:40:57

      以前看到谁多的朋友都遇到测试web service 遇到很多的问题,最先是不知道怎么测试的,如果来录制脚本可能是最大的问题,第二个问题就是如何参数化。本人今天有时间就写一点解决上面的两个问题

      背景:本人采用WSDL公开的地址来进行测试获取其中一个国家一个城市的天气情况的接口。

     操作步骤如下:

     step1、打开URL

      URL: http://www.webservicex.net/globalweather.asmx?WSDL 

      step2、保存本网页的内容到本地硬盘

       保存文件的名字为: globalweather.asmx

      step3 打开loadrunner

        1、选择协议: web service

        2、点击 add service call 

        3、点击 service :import service

        4、弹出一个对话框,你选择file ->本地已经保存的文件  globalweather.asmx

        5、点击 import ,会提示导入成功

        6、点击 operation 可以看到要测试的函数

     step4: 、参数化

        1 、打开 add service call

        2、选择要测试的函数 GetWeather 

        3、选择要参数化的参数:

        "CityName=abcde",
        "CountryName=abcde",

        //返回结果的定义

        "GetWeatherResult=Param_GetWeatherResult",

       4、点击 确认

    step5: 结束

         通过上面几部操作后,就会在action() 里面生成代码。如下:

      web_service_call( "StepName=GetWeather_102",
      "SOAPMethod=GlobalWeather|GlobalWeatherSoap|GetWeather",
      "ResponseParam=response",
      "Service=GlobalWeather",
      "ExpectedResponse=SoapResult",
      "Snapshot=t1317110209.inf",
      BEGIN_ARGUMENTS,
      "CityName=abcde",
      "CountryName=abcde",
      END_ARGUMENTS,
      BEGIN_RESULT,
      "GetWeatherResult=Param_GetWeatherResult",
      END_RESULT,
      LAST);

     

  • loadrunner 测试https

    2011-09-26 18:26:02

      开始的时候也不知道loadrunner支持https协议,通过网上查找还真是支持,很牛B的软件啊。。。
     
      测试实现的方法如下:
     1.增加如下的函数
      
      /*增加安全证书*/
        web_set_certificate_ex(
         "CertFilePath=client_cert.pem",   //个人公钥
         "CertFormat=PEM",
         "KeyFilePath=client_key.pem",     //个人私钥
         "KeyFormat=PEM",
         "Password=111111",
          LAST );
     2. 用户登录
        
           web_custom_request("Login",
            "URL=https://api.xxxx.com/restful/login",
            "Method=POST",
            "Resource=0",
            "RecContentType=text/plain",
            "Referer=",
            "Snapshot=t2.inf",
            "Mode=HTML",
            "EncType=text/plain; charset=UTF-8",
            "Body=<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n""\t\t<request>"
            "<username>XXXXXXXX@163.com</username><password>XXXXX</password></request>\n",
            LAST);
      3.增加你要测试的方法
    结果:搞定。。。 三步曲。。。
302/2<12
Open Toolbar