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

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

  系统功能介绍:

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

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

  测试工具:

  ● 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 Files\Mercury\LoadRunner\dat\protocols 中的http.lrp信息,在[Vugen]下面新加一条MaxThreadPerProcess=要设置的vuser数量 。

  测试结果:

  ● 前台发帖:

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

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

  ● 后台回帖:

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

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

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

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

LoadRunner做性能测试 从设计到分析执行的更多相关文章

  1. Loadrunner做性能测试的主要步骤

    Loadrunner做性能测试的主要步骤: Loadrunner将性能测试过程分为计划测试.测试设计.创建VU脚本.创建测试场景.运行测试场景和分析结果6个步骤. 1) 计划测试:主要进行测试需求的收 ...

  2. [转][LoadRunner]LR性能测试结果样例分析

    LR性能测试结果样例分析 测试结果分析 LoadRunner性能测试结果分析是个复杂的过程,通常可以从结果摘要.并发数.平均事务响应时间.每秒点击数.业务成功率.系统资源.网页细分图.Web服务器资源 ...

  3. [LoadRunner]LR性能测试结果样例分析

    R性能测试结果样例分析 测试结果分析 LoadRunner性能测试结果分析是个复杂的过程,通常可以从结果摘要.并发数.平均事务响应时间.每秒点击数.业务成功率.系统资源.网页细分图.Web服务器资源. ...

  4. 使用Loadrunner进行性能测试

    一.确定性能测试的范围.要求.配置.工具等 明确测试的系统: 本文档主要指的是web应用. 明确测试要求: 用户提出性能测试,例如,网站首页页面响应时间在3S之内,主要的业务操作时间小于10s,支持3 ...

  5. 转:LR性能测试结果样例分析 测试结果分析

    LoadRunner性能测试结果分析是个复杂的过程,通常可以从结果摘要.并发数.平均事务响应时间.每秒点击数.业务成功率.系统资源.网页细分图.Web服务器资源.数据库服务器资源等几个方面分析,如图1 ...

  6. LR性能测试结果样例分析

    http://www.cnblogs.com/hyzhou/archive/2011/11/16/2251316.html   测试结果分析 LoadRunner性能测试结果分析是个复杂的过程,通常可 ...

  7. (转)LR性能测试结果样例分析

    原文作者:猥琐丶欲为 传送门:http://www.cnblogs.com/hyzhou/archive/2011/11/16/2251316.html 测试结果分析 LoadRunner性能测试结果 ...

  8. LoadRunner 技巧之 脚本设计

    LoadRunner 技巧之 脚本设计 在做性能测试时,我们可能会遇到各种不同的业务需求与用户行为,在一个系统或网站中,每个用户的操作都不完全一样.我们如何来模拟这此用户的行为?经验与能力有限,我这里 ...

  9. 使用Jmeter做性能测试

    上周刚刚做完项目的性能测试.今天整理和总结一下,随便分享给大家. 首页呢,测试前,我们是有明确的性能指标的,而且测试环境和数据都已准备好,业务分析.场景分析大家根据自己的项目系统进行分析设计,我们选用 ...

随机推荐

  1. [转]mybatis如何直接 执行传入的任意sql语句 并按照顺序取出查询的结果集

    原文地址:https://www.cnblogs.com/wuyun-blog/p/5769096.html 需求: 1.直接执行前端传来的任何sql语句,parameterType="St ...

  2. SQL复制表操作

    select * into tb1 from tb2 insert into tb1 (fld1, fld2)  select fld1, 0 from tb2 where fld0='x' 以上两句 ...

  3. [openssl]openssl特定版本安装

    卸载旧版本 OpenSSL1. apt-get purge openssl2. rm -rf /etc/ssl #删除配置文件编译与安装 OpenSSLprefix 是安装目录,openssldir ...

  4. MSXML4 SP2 sp3安装时出错

    没有启动Windows Module Installer 服务或者windows installer服务,重启试试 Windows Installer Cleanup Tool清理早期的在选项框中找到 ...

  5. textbox 控制输入整数,小数

    /// <summary> /// keypress事件控制输入 /// </summary> /// <param name="sender"> ...

  6. android开发(43) 动画演示,会跑的小人,从屏幕左侧跑到右侧

    想做一个动画,一个会跑的小人,从屏幕右侧跑道右侧,于是做了个尝试,上图: 要完成这样需要三步: 1. 做一个 帧动画 (frame animation),由多张图片组成,组成小人连续跑动的样子. 2. ...

  7. Git 执行更改

    Jerry 克隆库,他决定实现基本字符串操作.于是,他创建文件string.c,在添加内容到 string.c 会这个样子. #include <stdio.h> int my_strle ...

  8. Spring Cloud Config 自动刷新所有节点 架构改造

    详细参考:<Sprin Cloud 与 Docker 微服务架构实战>p162-9.9.4节 要做的改动是: 1.在spring cloud config server 服务端加入 spr ...

  9. 常用的HTTP协议状态码

    200 - OK,服务器成功返回网页     - Standard response for successful HTTP requests. 301 - Moved Permanently(永久跳 ...

  10. greendao数据库初次使用的配置及多表关联的初始化

    1.在工程外层(Project)的build.gradle中添加依赖 buildscript { repositories { jcenter() } dependencies { classpath ...