场景设计-学习笔记之性能误区

by:授客 QQ1033553122

场景假设:

每个事务仅包含一次请求,执行10000个并发用户数

性能误区:

每秒并发用户数=每秒向服务器提交请求数

详细解答:

每秒并发用户数,是从客户端的视角定义的,而每秒请求数,是从服务器的视角定义的。

请求,从客户端-->网络-->服务器,中间的数据传递是需要时间的,所以10000个并发用户不一定同时到达服务器端,即每秒并发用户数 != 每秒并发请求数

此外,如果服务端接收到的请求数太多,超过请求队列的长度,服务器忙不过来,那么超过的部分将驻留在服务器的线程中,这部分的请求是不会对服务器端产生真正的负载,所以,每秒并发用户数 != 每秒并发请求数。

由此可知,常见的类似“服务器支持10000个并发用户”的性能需求,是从客户端的视角定义的,本身就存在一定的不合理性。反过来,从服务器的视角来定义性能需求--“服务器每秒能处理10000个并发请求”,似乎就比较合理了,现在的问题是:怎么样才能达到这个目的呢?

答案显而易见,增加客户端每秒并发用户数,比如15000(假定服务器能够处理这么多),这样同时到达服务器的请求数就可能达到10000个/秒。

而通常,我们期望测试结果能提供一个相对稳定的每秒请求数(RPS),要实现这个目的,得依赖持续不断的请求,所以,一般情况下,我们会对场景设置一个持续运行时间(在这个时间段内进行多次迭代),通过事务 (transaction) 的取样平均值来保证测试结果的准确性。

每个虚拟用户都在接收到来自服务响应后,下一次迭代中,重新发起新的请求,这样一来,多次的反复迭代运行可能会造成上述说的,请求数大于请求队列容量。

而我们知道,http本身是基于tcp连接的,而tcp连接又是同步协议,所以,对于每个虚拟用户来说,仅当每一个发到服务器的请求得到响应之后,才会发送下一次请求。而此时,服务器正处于忙碌的状态,一时间无法处理所有请求,这样一来,客户端接收到请求响应消息的时间间隔变长,甚至超时失败。

关键的是,当客户端请求发送出去后,LoadRunner就开始启动计时器,计算响应时间,直到它收到服务器端的响应为止。这样,得出的测试结果可能是:事务平均响应时间很长,最小响应时间与最大响应时间的差距很大,此时的平均响应时间,也就失去了它应有的意义。也就是说,由于客户端发送的请求太快而导致影响了实际的测量结果。

为了解决这个问题,我们可以在每两个事务请求之间插入一个思考时间,这将会降低单个用户启动请求的速度。间歇会减少请求在线程中驻留的时间,从而提供更符合现实的响应时间。

最后:

虽然性能测试通常都是从客户端活动的角度定义的,但是它们应该以服务器为中心的视角来看待。

loadrunner 场景设计-学习笔记之性能误区的更多相关文章

  1. UI设计学习笔记(7-12)

    UI学习笔记(7)--扁平化图标 认识扁平化 Flat Design 抛弃传统的渐变.阴影.高光等拟真视觉效果,打造看上去更平的界面.(颜色.形状) 扁平化图标有什么优缺点 优点: 简约不简单.有新鲜 ...

  2. DirectX 9 UI三种设计学习笔记:文章4章Introducing DirectInput+文章5章Wrapping Direct3D

           本文从哈利_创.转载请注明出处.有问题欢迎联系本人!        邮箱:2024958085@qq.com 上一期的地址: DX 9 UI设计学习笔记之二 第4章 Introducin ...

  3. loadrunner 场景设计-手工场景方案(Schedule)设计 Part 2

    loadrunner 场景设计-手工场景方案(Schedule)设计 Part 2 ---------------------------接Part 1------------------------ ...

  4. loadrunner 场景设计-手工场景方案(Schedule)设计 Part 1

    参考:http://blog.sina.com.cn/s/articlelist_5314188213_1_1.html loadrunner 场景设计-手工场景方案(Schedule)设计 Part ...

  5. loadrunner 场景设计-设计与实践

    场景设计-设计与实践 by:授客 QQ:1033553122 以lr 11.0 自带Web Tours为例,进行以下测试 说明:以下测试仅供演示,学习设计思路 A.确定系统组件 简单B/S架构:Cli ...

  6. loadrunner 场景设计-制定负载测试计划

    by:授客 QQ:1033553122 场景设计-制定负载测试计划 步骤1.分析应用程序 你应该对硬件和软件组建,系统配置和典型的使用场景很熟悉.这些应用程序的分析保证你在使用loadrunner进行 ...

  7. loadrunner 场景设计-负载生成器管理

    场景设计-负载生成器管理 by:授客 QQ:1033553122 1  简介 当执行一个场景时,Controller把场景中的每个用户配到负载生成器(Load generator). 所谓的负载生成器 ...

  8. loadrunner 场景设计-手工场景设计

    场景设计-手工场景设计 by:授客 QQ:1033553122 概述 通过选择需要运行的脚本,分配运行脚本的负载生成器,在脚本中分配Vuser来建立手工场景 手工场景就是自行设置虚拟用户的变化,主要是 ...

  9. loadrunner 场景设计-手工场景设计

    概述 通过选择需要运行的脚本,分配运行脚本的负载生成器,在脚本中分配Vuser来建立手工场景 手工场景就是自行设置虚拟用户的变化,主页是通过设计用户的添加和减少过程,来模拟真实的用户请求模型,完成负载 ...

随机推荐

  1. 第七节:详细讲解Java中的日期,java.util.date

    前言 大家好,给大家带来详细讲解Java中的日期,java.util.date的概述,希望你们喜欢 类Date Java.lang.Object->java.util.Date public c ...

  2. Python3基础语法你学会了么

      编码 默认:源码文件以UTF-8编码,字符串都是unicode字符串 指定:   标识符 第一个字符:字母表中的字符或下划线 _ 其它部分:由字母.数字.下划线 _ 组成 大小写敏感 python ...

  3. 跨浏览器的javascript事件的封装

    一,跨浏览器的事件处理程序 1,DOM0级处理事件 将一个函数赋值给一个事件处理程序属性. 事件流:冒泡阶段. 使用: 为元素增加事件: var btn = document.getElementBy ...

  4. 【微服务】.netCore eShopOnContainers 部署实践《一》

    官方说明文档 -------------------------------------------------------------- # eShopOnContainers - Microser ...

  5. Xamarin.Android 记住账号

    1.存储登陆信息 if(login_cb_user.Checked) { ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPr ...

  6. github相关指令学习

    正在廖雪峰官网学习关于git的相关知识,已经不是第一次来学习,但是忘得太快,索性这次边学边记录笔记,加深记忆,方便后期查看 1.找到一个合适的地方,鼠标右键 Git Bush Here ,新建文件夹, ...

  7. Django -- 部署Django 静态文件不能获取

    # 在部署上下之后无法正常显示后台admin的静态文件 # 因为文件都在django内部,而在nginx中将配置都设置到一个位置: # 措施: 1.在settings.py文件中添加配置; STATI ...

  8. .net core build docker image

    1.创建.net core web项目 2.添加Dockerfile文件 # 基于microsoft/dotnet:2.1-aspnetcore-runtime构建Docker Image FROM ...

  9. QC内部分享ppt

    Quality Center是一个基于Web的测试管理工具,可以组织和管理应用程序测试流程的所有阶段,包括制定测试需求.计划测试.执行测试和跟踪缺陷.此外,通过Quality Center还可以创建报 ...

  10. mysql使其支持插入中文数据的办法

    1.找到安装的文件夹C:\Program Files (x86)\MySQL\MySQL Server 5.0 2.修改文件夹下的my.ini文件: 找到画黄线的这一字段 将后面改为utf8 这个过程 ...