Web压力架构
原文地址:https://www.cnblogs.com/lori/archive/2015/03/27/4370827.html
Web压力架构... 1
一 系统性能测试概述... 1
1.1 性能测试概述... 1
1.2 性能测试的指标... 2
1.3 关键点的描述... 2
1.4 性能测试的目的... 2
1.5 测试项目开发规范... 2
二 使用VS压力测试工具进行测试... 3
2.1 性能测试(WebTest). 3
2.1.1 概念... 3
2.1.2 如何建立性能测试... 3
2.1.3 使用CS代码快速建立性能测试... 5
2.1.4 运行当前性能测试... 6
2.2 负载(压力)测试(LoadTest)... 6
2.2.1 概念... 6
2.2.2 目的... 6
2.2.3 术语... 6
2.2.4 如何建立负载测试... 7
2.2.5 负载测试运行时的说明... 10
2.2.6 分析报告说明... 11
2.3 测试场景描述... 12
2.4 主要业务模块... 12
三 测试数据的填充... 13
3.1 Webtest工具填充... 13
3.2 手动编辑业务代码... 13
3.3 使用RedGate.SQLDataGenerator工具进行填充... 13
一 系统性能测试概述
1.1 性能测试概述
本次测试是针对学习吧系统在应对密集整转的压力下业务处理能力的测试,检验系统的吞吐率。本系统的压力测试主要是针对主要用户注册,登录,用户中心,班级圈、订单,检查在应用高峰时期,并发用户数较多的时候的处理能力等等。
1.2 性能测试的指标
1 应用系统的负载能力:即系统所能容忍的最大用户数量,也就是在正常的响应时间中,系统能够支持的最多的客户端的数量。
2 应用系统的吞吐率:即应用系统在单位时间内完成的交易量,也就是在单位时间内,应用系统针对不同的负载压力,所能完成的交易数量。
3 系统的响应能力:即在各种负载压力情况下,系统的响应时间,也就是从客户端请求发起,到服务器端应答返回所需要的时间,包括网络传输时间和服务器处理时间。
4 应用系统的可靠性:即在连续工作时间状态下,系统能够正常运行的时间,即在连续工作时间段内没有出错信息
1.3 关键点的描述
系统在不同用户数量(并发)压力下的表现,即:支持的并发用户数目和并发用户发送频率,以及在较大压力下,系统的处理能力以及CPU、数据库I/O和内存的使用情况,并找出相应的性能瓶颈
1.4 性能测试的目的
压力测试的目的就是检验系统的最大吞吐量,检验现行的业务系统在各种压力交易
量下的运行状况,检验系统地运行瓶颈,获取系统的处理能力等等。
本次针对系统所进行的压力测试的测试目的为:
1 给出系统当前的性能状况
2 定位系统性能瓶颈或潜在性能瓶颈
3 总结一套合理的、可操作的、适合公司现实情况的性能测试方案,为后续的性能测试工作提供基本思路
1.5 测试项目开发规范
1 在具体项目解决方案中添加测试项目
2 为每个模块建立各自的文件夹
3 开发人员可以采用代码方法建立性能测试,非专业人员可以通过录制建立性能测试
4 测试域名不采用IP地址,可以在HOSTS中配置虚拟域名,这样方便以后修改
5 数据动态参数采用CSV文件,对于非加密信息可以采用直接连接数据库的方式得到真实数据
二 使用VS压力测试工具进行测试
2.1 性能测试(WebTest)
2.1.1 概念
将一些测试的流程进行录制,并保存成一个webtest 就生成了一个web性能测试,这些性能测试文件可以添加到负载测试项目,完成压力测试。(负载测试项目由多个web性能测试组成)
2.1.2 如何建立性能测试
- 需要安装 Visual Studio 旗舰版
- 创建 Web 性能和负载测试项目
1 创建 Web 性能测试
你的 Web 浏览器随即打开。
2 输入要测试的网站的 URL。
3 如果你希望客户使用自己的应用程序,也请你使用。 例如,搜索项并将其添加到购物车中。记录器将捕获 HTTP 请求和响应。
4 完成后,请停止记录。
现在,Visual Studio 为你的每个 HTTP 请求的 HTTP 响应查找动态参数。 发生这种情况时,将显示进度栏。
5 重命名你的测试。 例如,学民吧首页.webtest。
6 编辑测试属性以指定性能目标。 例如,可以将页面响应时间目标设置为 1 秒。(这个值在负载测试时会用到)
7 保存测试。
2.1.3 使用CS代码快速建立性能测试
通过向导生成性能测试后,也可以将它生成代码文件,方便我们开发人员直接编辑它
2.1.4 运行当前性能测试
运行性能测试后,它会模拟你定义的请求,代你完成整个流程
测试结果在运行后被显示出来
2.2 负载(压力)测试(LoadTest)
2.2.1 概念
负载测试(Load Testing)是确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统组成部分的相应输出项,例如通过量、响应时间、CPU负载、内存使用等来决定系统的性能。负载测试是一个分析软件应用程序和支撑架构、模拟真实环境的使用,从而确定能够接收的性能过程。压力测试(Stress Testing)是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。
2.2.2 目的
通过压力测试,判断当前应用环境情况下系统的负载能力,为今后应用范围扩大,用户量上升后,服务器扩容、升级等提供必要的技术支撑,及服务器规划等。
2.2.3 术语
应用服务器
网站/软件架构中的应用处理服务器,提供请求的接收、处理、返回WEB请求
数据库服务器
网站/软件架构中的数据处理服务器,提供数据的存储和读取等功能
测试机
专门用来压力测试的计算机,通常为常用的PC机
系统用户数
是指实际可能使用应用系统的总用户数
在线用户数
是指当前登录应用系统,处于正在操作或空闲状态的用户数
并发用户数
是指当前登录应用系统,并同时进行操作的用户数
响应时间
是指服务器从接收请求到返回请求之间的处理时间。压力测试中,忽略网络传输时间及测试机中处理时间,测试机上获得响应时间即作为服务器的响应时间
2.2.4 如何建立负载测试
1 在 Web 性能和负载测试项目中创建新的负载测试。
2 负载测试向导出现后,请选择负载模式步骤。
将负载模式更改为分级负载。 这将随着时间逐渐添加用户。
3 选择测试组合步骤。
添加创建的 Web 性能测试。
将 Web 性能测试移至要运行的测试列表中。
4 完成向导后,Web 性能测试就会添加到负载测试并显示在负载测试编辑器中。
2.2.5 负载测试运行时的说明
在测试运行时,你可能会发展某个页的响应时间超过你设置的值。
添加分析注释以跟踪问题。
负载测试完成后,将显示摘要。
已完成测试的结果包含性能计数器数据、阈值冲突和错误信息。 注意,如果在性能测试中,这个相应时间没有设置(默认为0)表示,不去关心这个数据,即使你的响应时间再慢,它不会出现未通过的情况,如图
2.2.6 分析报告说明
负载测试摘要
整体结果
最大用户负载 |
225 |
测试/秒 |
15.9 |
未通过的测试 |
6,928 |
平均测试时间(秒) |
12.9 |
每秒事务数 |
0 |
平均事务时间(秒) |
0 |
每秒页数 |
20.1 |
平均页面时间(秒) |
10.2 |
请求/秒 |
174 |
失败的请求数 |
0 |
缓存的请求数占总请求数的百分比 |
57.7 |
平均响应时间(秒) |
1.20 |
平均内容长度(字节) |
1,346 |
关键统计信息: 最慢的 5 个页面
URL (更多详细信息的链接) |
95% 页面时间(秒) |
xxx |
19.0 |
xxx |
8.08 |
xxx |
0.13 |
关键统计信息: 最慢的 5 个测试
名称 |
95% 测试时间(秒) |
29.1 |
测试结果
测试结果部分列出了负载测试中的所有测试和方案。 它将显示测试名称、方案、运行次数、失败次数以及平均测试时间。 您可以选择某个测试的名称以打开“测试”表和查看该测试的更多详细信息。
名称(性能测试名称) |
方案(方案名称) |
测试总数 |
失败的测试数(占总数的百分比) |
平均测试时间(秒) |
xxx |
我的班级圈 |
2,507 |
0 (0) |
21.4 |
xx |
学生登陆-增量测试 |
5,346 |
5,325 (99.6) |
10.1 |
xxx |
学生登陆-桓定测试 |
1,666 |
1,603 (96.2) |
8.80 |
页结果
页面结果部分列出了负载测试中的所有网页。 将显示 URL、方案、测试名称、平均页面时间和计数。 您可以选择某个页面的 URL 以打开“页”表和查看该页面的更多详细信息。
页结果
URL (更多详细信息的链接) |
方案 |
测试 |
平均页面时间(秒) |
计数 |
xxx |
我的班级圈 |
我的班级圈 |
11.5 |
2,507 |
xxx |
学生登陆-增量测试 |
登陆 |
10.1 |
5,346 |
xxx |
我的班级圈 |
我的班级圈 |
9.87 |
2,550 |
xxx |
学生登陆-桓定测试 |
登陆 |
8.80 |
1,666 |
错误
错误部分列出了在负载测试过程中发生的所有错误。 将显示错误类型和子类型、计数和最新消息。 您可以选择某个错误以打开“错误”表,并查看该错误的更多详细信息。
类型 |
子类型 |
计数 |
最后一条消息 |
SocketException |
2 |
由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。 163.177.72.159:80 |
事务结果
事务结果部分列出了负载测试中的所有事务。 将显示事务名称、方案、名称、响应时间、已用时间和计数。 您可以选择某个事务的名称以打开“事务”表,并查看该事务的更多详细信息。
控制器和代理资源
控制器和代理资源部分列出了用于运行测试的计算机。 将显示计算机名、处理器时间百分比和可用内存。 您可以选择某个计算机名称以打开“控制器和代理”图形,并查看不同时间的资源使用量。
用户分布图
测试结果表格
关系图表
2.3 测试场景描述
测试中,使用逐步加压的模式,测试运行场景安排如下:
- 每隔2秒增加1个用户连接,最多增加到100个用户,查看并记录运行情况
- 每隔2秒增加2个用户连接,最多增加到200个用户,查看并记录运行情况
- 每隔2秒增加1个用户连接,最多增加到300个用户,查看并记录运行情况
- 每隔3秒增加1个用户连接,最多增加到400个用户,查看并记录运行情况
- 常量负载,用户数固定100个,200个,500个
每个场景都包括:
- 用户登录
- 业务操作
- 业务完成
- 退出系统,所有用例都按以上场景
- 用户注册
- 用户登录
- 老师认证
- 老师中心
- 老师开通班级圈
- 老师建立课程
- 老师建立作业
- 老师建立试题
- 学生中心
- 学生购买
- 学生学习
- 学生充值
- 班级圈展示页
- 班级圈列表页
- 首页
2.4 主要业务模块
三 测试数据的填充
3.1 Webtest工具填充
使用webTest对指定页面逻辑进行录制,如用户注册,建立课程等,之后使用压力测试工具loadtest进行测试同时测试数据即可写入真实库。
3.2 手动编辑业务代码
由开发人员去针对指定模块的业务进行二次开发,再使用如循环的方式将数据批量注入真实数据库即可
3.3 使用RedGate.SQLDataGenerator工具进行填充
操作简单,上手容易!
1 定义生成数据的数量
2 预览生成的数据结果
3 可以对指定数据列进行编辑,对数值类型的列可以进行随机生机,增量生成,设置最大值和最小值等等
4 对字符类型的列,可以进行正则表达式的过滤
5 对日期时间类型的列,可以设置起始日期和结束日期,及随机产生和增量产生及时间段产生等
6 一键生成数据,并提供数据生成的报表
Web压力架构的更多相关文章
- 浅谈大型web系统架构
动态应用,是相对于网站静态内容而言,是指以c/c++.php.Java.perl..net等服务器端语言开发的网络应用软件,比如论坛.网络相册.交友.BLOG等常见应用.动态应用系统通常与数据库系统. ...
- 【架构】浅谈web网站架构演变过程
浅谈web网站架构演变过程 前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变. 该系统具备的功能: 用户模块:用户注册和管理 商品模块:商品展示和管 ...
- (转)web网站架构演变
浅谈web网站架构演变过程 前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变. 该系统具备的功能: 用户模块:用户注册和管理 商品模块:商品展示和管 ...
- 转:浅谈大型web系统架构
浅谈大型web系统架构 动态应用,是相对于网站静态内容而言,是指以c/c++.php.Java.perl..net等服务器端语言开发的网络应用软件,比如论坛.网络相册.交友.BLOG等常见应用.动态应 ...
- web网站架构
浅谈web网站架构演变过程 前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变. 该系统具备的功能: 用户模块:用户注册和管理 商品模块:商品展示和管 ...
- Web网站架构演变—高并发、大数据
转 Web网站架构演变—高并发.大数据 2018年07月25日 17:27:22 gis_morningsun 阅读数:599 前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系 ...
- Java Web系统架构概览
大型网站系统架构的演进都是随着业务增长不断演进,所有的出发点都是为了满足业务需求.最初访问量下,功能简单时,单体软件可以解决所有问题:后来访问量逐渐增大,功能愈加丰富,此时单体软件的架构逐渐成为开发和 ...
- 分享一个.NET实现的简单高效WEB压力测试工具
在Linux下对Web进行压力测试的小工具有很多,比较出名的有AB.虽然AB可以运行在windows下,但对于想简单界面操作的朋友有点不太习惯.其实vs.net也提供压力测试功能但显然显得太重了,在测 ...
- Web信息架构——设计大型网站(第3版)(久负盛名经典再现,信息架构设计领域基石之作!)
Web信息架构——设计大型网站(第3版)(久负盛名经典再现,信息架构设计领域基石之作!) [美]]Peter Morville(彼得·莫维尔) Louis Rosenfeld(路易斯·罗森菲尔德) ...
随机推荐
- [Docker] Getting Started with Container Networks
It is possible to group containers into a network and we can create multi networks so that container ...
- WIN10系统 截图或者某些程序时屏幕会自动放大怎么办
右击这个应用程序,兼容性,以兼容模式运行,同时勾选高DPI设置时禁止显示缩放即可
- WinForm 之 VS2010发布、打包安装程序
第一步.在vs2010 打开要打包的应用程序解决方案,右键“ 解决方案 ” → “ 添加 ” → “ 新建项目 ” → “ 其他项目类型 ” → “ 安装和部署 ” → “ Visual Studio ...
- 这两天使用JSP开发程序,记录一些基本方法
一.截取字符串 第一步 导入包:<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn ...
- MACD判断定背离,底背离
MACD背离: 价格创新高而指标却下跌 价格创新低而指标却上涨 缠中说禅背离 多次缠绕中唇吻的面积更小 看图说话:
- Communication API
Stingray WIKI Stingray javascript Communication 主要的三个方法: Communication.LinkRequest - 页面跳转,调用比较简单,直接参 ...
- Cocos开发中可能会遇到的问题
开发中碰到的问题及解决方案: 1:场景工程中没有被依赖关联的图片声音或者其它资源,导出到微信后找不到 有些在场景工程中没有指定而通过代码中动态加载的资源,cocos creator不会导出到发布目 ...
- 腾讯云ubuntu搭建jdk
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6377878.html 在购买了腾讯云ubuntu主机后,需要手动搭建java环境.安装tomcat等.ubun ...
- Linux下pppoe设置
在Linux下配置pppoe,一般有以下步骤: 1. 安装pppoe软件.这个不多说,ape-get install pppoe即可. 2. 设置拨号属性: [cpp] view plain copy ...
- An Objective-C Error
Incompatible integer to pointer conversion assigning to 'NSInteger *' (aka 'long *') from 'int' 主要是因 ...