zoukankan      html  css  js  c++  java
  • LoadRunner做性能测试 从设计到分析执行

    项目简介:像百度知道系统类似的系统性能测试,是公司的自己产品。

      对最近这个系统的性能测试进行总结下:

      系统功能介绍:

      前台用户可以根据自己的需要对不同的区域提问,提问包括匿名和登陆用户提问

      后台不同区域的管理员对所提的问题进行回答、删除和审核问题,超级管理员对所有区域信息能够进行统计。

      测试工具:

      ● MI公司的压力测试工具LoadRunner

      ● 版本:8.1

      ● License:10000

      ● 协议:HTTP/WEB协议

      根据需求设计性能测试方案及场景

      场景简单设计如下:

      1. 前台发帖

      ● 打开首页面;

      ● 记录进入首页面所用时间

      ● 输入用户名和口令登陆;

      ● 记录登陆所用的时间;

      ● 编辑帖子并发送;

      ● 记录发帖所用时间;

      ● 重复3-6步15分钟。

      2. 后台回答问题

      ● 打开后台登陆页面;

      ● 记录进入页面所用时间;

      ● 输入用户名和口令登陆;

      ● 记录登陆所用的时间;

      ● 发送回答问题信息;

      ● 记录回答问题所用时间;

      ● 重复3-6步15分钟。

        3. 后台审核问题

      ……

      4. 后台删除问题

      ……

      

          硬件环境:

      负载均衡和HA,局域网(压力机和服务器在同一交换机上)

      性能指标:

      没有明确的性能指标,重点监控服务器不出现500错误,以及CPU、内存、IO等资源使用情况,以及并发数、TPS、成功率等根据测试情况进行调优,满意为止。(和别的web性能测试提出明确指标如响应时间等有所不同)

      测试脚本修改原则:

      前台发帖:

      1. 注释思考时间

      2. 前台要求对不同的区域进行发帖提问,所以要数据库中存在相应的区域,并允许同一IP多次提交提问

      A. 由于所存在区域如500个,而前台要求并发提问为2000并发,这样一一对应关系会使参数不足,可以做参数化的时候,对所存在的区域信息进行copy。参数选择的设置为unique、once,这样才能使一个提问者对于一个区域。

      B. 对问题的要求,要求每次提不同的问题,最简单的方法是做参数时选择unique number,update value on选择once,数据已经足够大了,不会担心参数不够而报错。

      3. 要求开发注释掉验证码,或万能验证码

      后台回帖:

      1. 注释思考时间

      2. 后台允许多个IE登陆

      A. 由于所存在区域如500个,要求登陆并发回帖为2000并发,这样一一对应关系会使参数不足,可以做参数化的时候,对所存在的区域信息进行copy。参数选择的设置为unique、once。注意密码和用户名要完全匹配。

      B. 对同一个问题运行多次回答。

      C. 加检查点如: web_global_verification("Text=欢迎您",LAST);

      D.对一个问题对应一个用户注意参数化的设置。

    执行测试并分析调优:

      测试中报错的信息解决:

      1. Failed to connect to server "域名:80": [10065] No Route to Host

      解决:

      这种错误信息有两种情况,一是交换机堵塞,一是服务器网络堵塞或者CPU无法响应(网卡中断处理不过来了)。

      从服务器端检查下iptables 是否开启,看看 /proc/sys/net/ipv4/ip_conntrack_max 是多少。

      2. TTP Status-Code=500 (Internal Server Error)

      解决:

      A. 这个问题,开发人员从程序和环境进行调优了。

      B. 通过抓包发现有大量的sql语句重复执行,建议优化sql。

      C. 优化JVM。机器配置:4G的内存,32个线程并发能力

      -Xmx3800m -Xms3800m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20

      3. HTTP Status-Code=504 (Gateway Time-out)

      解决:

      502 bad Gateway  服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答。

      504Gateway Timeout  由作为代理或网关的服务器使用,表示不能及时地从远程服务器获得应答。

      解决:可以启动多个tomcat服务,一个tomcat服务可能支撑不了那么大的并发。(一般情况下像IBM高配的服务一个tomcat能支持2000并发吧。)(只能让部署环境的同事帮忙调整,我们没这权利啊。)

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

      解决:

      可以修改配置参数(tomcat的),也可以程序上进行调整超时时间。

      如    <Connector port="8080"

      maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

      enableLookups="false" redirectPort="8443" acceptCount="100"

      debug="0" connectionTimeout="20000"

      disableUploadTimeout="true" />

      当然了也可以调整LR的配置但最好不这样。

      5. Abnormal termination, caused by mdrv process termination

      解决:

      大胆尝试了修改了LR中的D:Program FilesMercuryLoadRunnerdatprotocols 中的http.lrp信息,在[Vugen]下面新加一条MaxThreadPerProcess=要设置的vuser数量 。

      测试结果:

      ● 前台发帖:

      场景设计:执行2000并发匿名对不同的区发帖,每15秒上50个用户,2000个用户全部到达后,持续执行10分钟。

    并发数 提问响应时间 成功率% 服务器每秒处理的请求数 吞吐量(Mbps)
    2000        

      ● 后台回帖:

      场景设计:执行400并发对同一区不同的帖子进行回复,每10秒上20用户,400个用户全部到达后,持续执行10分钟。

    并发数 回帖响应时间 成功率% 服务器每秒处理的请求数 吞吐量(Mbps)
    400        

      注:响应时间的单位为:秒

      这个测试结果比较满意,还在进一步调优。

  • 相关阅读:
    JsonResponse
    python导出数据到excel
    ftp上传文件到服务器
    js设计模式 —— 订阅发布模式
    reducer的作用
    redux设置和使用三大原则
    js事件监听
    图片占位符
    正则练习
    正则基础
  • 原文地址:https://www.cnblogs.com/shengs/p/5286515.html
Copyright © 2011-2022 走看看