loadrunner 场景设计-学习笔记之性能误区
场景设计-学习笔记之性能误区
by:授客 QQ:1033553122
场景假设:
每个事务仅包含一次请求,执行10000个并发用户数
性能误区:
每秒并发用户数=每秒向服务器提交请求数
详细解答:
每秒并发用户数,是从客户端的视角定义的,而每秒请求数,是从服务器的视角定义的。
请求,从客户端-->网络-->服务器,中间的数据传递是需要时间的,所以10000个并发用户不一定同时到达服务器端,即每秒并发用户数 != 每秒并发请求数
此外,如果服务端接收到的请求数太多,超过请求队列的长度,服务器忙不过来,那么超过的部分将驻留在服务器的线程中,这部分的请求是不会对服务器端产生真正的负载,所以,每秒并发用户数 != 每秒并发请求数。
由此可知,常见的类似“服务器支持10000个并发用户”的性能需求,是从客户端的视角定义的,本身就存在一定的不合理性。反过来,从服务器的视角来定义性能需求--“服务器每秒能处理10000个并发请求”,似乎就比较合理了,现在的问题是:怎么样才能达到这个目的呢?
答案显而易见,增加客户端每秒并发用户数,比如15000(假定服务器能够处理这么多),这样同时到达服务器的请求数就可能达到10000个/秒。
而通常,我们期望测试结果能提供一个相对稳定的每秒请求数(RPS),要实现这个目的,得依赖持续不断的请求,所以,一般情况下,我们会对场景设置一个持续运行时间(在这个时间段内进行多次迭代),通过事务 (transaction) 的取样平均值来保证测试结果的准确性。
每个虚拟用户都在接收到来自服务响应后,下一次迭代中,重新发起新的请求,这样一来,多次的反复迭代运行可能会造成上述说的,请求数大于请求队列容量。
而我们知道,http本身是基于tcp连接的,而tcp连接又是同步协议,所以,对于每个虚拟用户来说,仅当每一个发到服务器的请求得到响应之后,才会发送下一次请求。而此时,服务器正处于忙碌的状态,一时间无法处理所有请求,这样一来,客户端接收到请求响应消息的时间间隔变长,甚至超时失败。
关键的是,当客户端请求发送出去后,LoadRunner就开始启动计时器,计算响应时间,直到它收到服务器端的响应为止。这样,得出的测试结果可能是:事务平均响应时间很长,最小响应时间与最大响应时间的差距很大,此时的平均响应时间,也就失去了它应有的意义。也就是说,由于客户端发送的请求太快而导致影响了实际的测量结果。
为了解决这个问题,我们可以在每两个事务请求之间插入一个思考时间,这将会降低单个用户启动请求的速度。间歇会减少请求在线程中驻留的时间,从而提供更符合现实的响应时间。
最后:
虽然性能测试通常都是从客户端活动的角度定义的,但是它们应该以服务器为中心的视角来看待。
loadrunner 场景设计-学习笔记之性能误区的更多相关文章
- UI设计学习笔记(7-12)
UI学习笔记(7)--扁平化图标 认识扁平化 Flat Design 抛弃传统的渐变.阴影.高光等拟真视觉效果,打造看上去更平的界面.(颜色.形状) 扁平化图标有什么优缺点 优点: 简约不简单.有新鲜 ...
- DirectX 9 UI三种设计学习笔记:文章4章Introducing DirectInput+文章5章Wrapping Direct3D
本文从哈利_创.转载请注明出处.有问题欢迎联系本人! 邮箱:2024958085@qq.com 上一期的地址: DX 9 UI设计学习笔记之二 第4章 Introducin ...
- loadrunner 场景设计-手工场景方案(Schedule)设计 Part 2
loadrunner 场景设计-手工场景方案(Schedule)设计 Part 2 ---------------------------接Part 1------------------------ ...
- loadrunner 场景设计-手工场景方案(Schedule)设计 Part 1
参考:http://blog.sina.com.cn/s/articlelist_5314188213_1_1.html loadrunner 场景设计-手工场景方案(Schedule)设计 Part ...
- loadrunner 场景设计-设计与实践
场景设计-设计与实践 by:授客 QQ:1033553122 以lr 11.0 自带Web Tours为例,进行以下测试 说明:以下测试仅供演示,学习设计思路 A.确定系统组件 简单B/S架构:Cli ...
- loadrunner 场景设计-制定负载测试计划
by:授客 QQ:1033553122 场景设计-制定负载测试计划 步骤1.分析应用程序 你应该对硬件和软件组建,系统配置和典型的使用场景很熟悉.这些应用程序的分析保证你在使用loadrunner进行 ...
- loadrunner 场景设计-负载生成器管理
场景设计-负载生成器管理 by:授客 QQ:1033553122 1 简介 当执行一个场景时,Controller把场景中的每个用户配到负载生成器(Load generator). 所谓的负载生成器 ...
- loadrunner 场景设计-手工场景设计
场景设计-手工场景设计 by:授客 QQ:1033553122 概述 通过选择需要运行的脚本,分配运行脚本的负载生成器,在脚本中分配Vuser来建立手工场景 手工场景就是自行设置虚拟用户的变化,主要是 ...
- loadrunner 场景设计-手工场景设计
概述 通过选择需要运行的脚本,分配运行脚本的负载生成器,在脚本中分配Vuser来建立手工场景 手工场景就是自行设置虚拟用户的变化,主页是通过设计用户的添加和减少过程,来模拟真实的用户请求模型,完成负载 ...
随机推荐
- 【WebAPI No.5】Core WebAPI中的自定义格式化
介绍 Web API为JSON和XML提供媒体类型格式化程序.框架默认将这些格式化程序插入管道中.客户端可以在HTTP请求的Accept标头中请求JSON或XML. 格式化数据这个东西,其实没有什么最 ...
- Docker hv-sock proxy (vsudd) is not reachable
Docker hv-sock proxy (vsudd) is not reachable Docker hv-sock proxy (vsudd) is not reachable at Docke ...
- 远程连接服务器或云数据库上的mysql服务 - 赖大大
主要问题有两种: 1.mysql的权限问题. 2.服务器的防火墙和数据库的安全组没设好的问题. 1.权限问题: 首先登录上mysql mysql> use mysql; #使用mysq ...
- Spring Boot + Spring Cloud 构建微服务系统(九):配置中心(Spring Cloud Config)
技术背景 如今微服务架构盛行,在分布式系统中,项目日益庞大,子项目日益增多,每个项目都散落着各种配置文件,且随着服务的增加而不断增多.此时,往往某一个基础服务信息变更,都会导致一系列服务的更新和重启, ...
- visual studio code (vsc)中查看 php 数组的全部元素
在 vsc 调试 php 时,如果数组元素过多,只能查看前面 30个左右的元素,如果需要看更多的元素,可以配置 xDebugSettings 修改项目中的 .vscode/launch.json 文件 ...
- 【CSS学习】--- z-index属性
一.前言 网页显示实际上是三维的,我们直观看到的有x轴和y轴,但在网页布局上还有一个z轴. 对于定位元素,我们使用top.right.left.bottom来实现元素在x-y平面上的定位,但为了表示布 ...
- C语言之链表的使用
C语言链表初学者都说很难,今天就来为大家讲讲链表 讲链表之前不得不介绍一下结构体,在链表学习之前大家都应该已经学了结构体,都知道结构体里面能有许多变量,每个变量可以当做这个结构体的属性,例如: str ...
- 将MySQL数据库转移到SqlServer2008数据库
由于工作需要用到了将MySQL数据库转成SqlServer数据库,查了一些资料发现将SqlServer数据库转成MySQL数据库的文章很多,但是反过来的就很少了.下面就将自己的方法分享给大家. 这里用 ...
- c# 获取当前绝对路径
/// <summary> /// 获得当前绝对路径 /// </summary> /// <param name="strPath">指定的路 ...
- IDEA从SVN中导入多模块项目
idea多模块项目的导入 在IntelliJ IDEA中间新建一个空项目,名字可以是svn要检索的的项目名称,原则是开心就好: 现在,我们将我们在svn中的多模块的项目down下来 选中顶部的导航中的 ...