web性能测试基本性能指标

2023-10-27

文章出处:https://blog.csdn.net/qiguiting/article/details/11584397

Web性能测试的部分概况一般来说,一个Web请求的处理包括以下步骤:

(1)客户发送请求

(2)web server接受到请求,进行处理;

(3)web server向DB获取数据;

(4)webserver生成用户的object(页面),返回给用户。给客户发送请求开始到最后一个字节的时间称为响应时间(第三步不包括在每次请求处理中)。

1.事务(Transaction)

在web性能测试中,一个事务表示一个“从用户发送请求->web server接受到请求,进行处理-> web server向DB获取数据->生成用户的object(页面),返回给用户”的过程,一般的响应时间都是针对事务而言的。

2.请求响应时间

请求响应时间指的是从客户端发起的一个请求开始,到客户端接收到从服务器端返回的响应结束,这个过程所耗费的时间,在某些工具中,响应通常会称为“TTLB”,即"time to last byte",意思是从发起一个请求开始,到客户端接收到最后一个字节的响应所耗费的时间,响应时间的单位一般为“秒”或者“毫秒”。一个公式可以表示:响应时间=网络响应时间+应用程序响应时间。标准可参考国外的3/5/10原则:

(1)在3秒钟之内,页面给予用户响应并有所显示,可认为是“很不错的”;

(2)在3~5秒钟内,页面给予用户响应并有所显示,可认为是“好的”;

(3)在5~10秒钟内,页面给予用户响应并有所显示,可认为是“勉强接受的”;

(4)超过10秒就让人有点不耐烦了,用户很可能不会继续等待下去;

3、事务响应时间

  事务可能由一系列请求组成,事务的响应时间主要是针对用户而言,属于宏观上的概念,是为了向用户说明业务响应时间而提出的.例如:跨行取款事务的响应时间就是由一系列的请求组成的.事务响应时间是直接衡量系统性能的参数.

4.并发用户数

并发一般分为2种情况。一种是严格意义上的并发,即所有的用户在同一时刻做同一件事情或者操作,这种操作一般指做同一类型的业务。比如在信用卡审批业务中,一定数目的拥护在同一时刻对已经完成的审批业务进行提交;还有一种特例,即所有用户进行完全一样的操作,例如在信用卡审批业务中,所有的用户可以一起申请业务,或者修改同一条记录。

  另外一种并发是广义范围的并发。这种并发与前一种并发的区别是,尽管多个用户对系统发出了请求或者进行了操作,但是这些请求或者操作可以是相同的,也可以是不同的。对整个系统而言,仍然是有很多用户同时对系统进行操作,因此也属于并发的范畴。

  可以看出,后一种并发是包含前一种并发的。而且后一种并发更接近用户的实际使用情况,因此对于大多数的系统,只有数量很少的用户进行“严格意义上的并发”。对于WEB性能测试而言,这2种并发情况一般都需要进行测试,通常做法是先进行严格意义上的并发测试。严格意义上的用户并发一般发生在使用比较频繁的模块中,尽管发生的概率不是很大,但是一旦发生性能问题,后果很可能是致命的。严格意义上的并发测试往往和功能测试关联起来,因为并发功能遇到异常通常都是程序问题,这种测试也是健壮性和稳定性测试的一部分。

用户并发数量:关于用户并发的数量,有2种常见的错误观点。 一种错误观点是把并发用户数量理解为使用系统的全部用户的数量,理由是这些用户可能同时使用系统;还有一种比较接近正确的观点是把在线用户数量理解为并发用户数量。实际上在线用户也不一定会和其他用户发生并发,例如正在浏览网页的用户,对服务器没有任何影响,但是,在线用户数量是计算并发用户数量的主要依据之一。

5.吞吐量

指的是在一次性能测试过程中网络上传输的数据量的总和.吞吐量/传输时间,就是吞吐率.

6、 TPS(transactionper second)

每秒钟系统能够处理的交易或者事务的数量.它是衡量系统处理能力的重要指标.

7、点击率

每秒钟用户向WEB服务器提交的HTTP请求数.这个指标是WEB应用特有的一个指标:WEB应用是"请求-响应"模式,用户发出一次申请,服务器就要处理一次,所以点击是WEB应用能够处理的交易的最小单位.如果把每次点击定义为一个交易,点击率和TPS就是一个概念.容易看出,点击率越大,对服务器的压力越大.点击率只是一个性能参考指标,重要的是分析点击时产生的影响。需要注意的是,这里的点击并非指鼠标的一次单击操作,因为在一次单击操作中,客户端可能向服务器发出多个HTTP请求.

8.资源利用率

指的是对不同的系统资源的使用程度,例如服务器的CPU利用率,磁盘利用率等.资源利用率是分析系统性能指标进而改善性能的主要依据,因此是WEB性能测试工作的重点.

资源利用率主要针对WEB服务器,操作系统,数据库服务器,网络等,是测试和分析瓶颈的主要参考.在WEB性能测试中,更根据需要采集相应的参数进行分析。

通用指标(指Web应用服务器、数据库服务器必需测试项)

指标

说明

ProcessorTime 服务器CPU占用率,一般平均达到70%时,服务就接近饱和
Memory Available Mbyte 可用内存数,如果测试时发现内存有变化情况也要注意,如果是内存泄露则比较严重
Physicsdisk Time 物理磁盘读写时间情况

Web服务器指标

指标

说明

Requests Per Second(Avg Rps) 平均每秒钟响应次数=总请求时间 / 秒数
Avg time to last byte per terstion (mstes) 平均每秒业务脚本的迭代次数 ,有人会把上面那个混淆
Successful Rounds 成功的请求
Failed Requests 失败的请求
Successful Hits 成功的点击次数
Failed Hits 失败的点击次数
Hits Per Second 每秒点击次数
Successful Hits Per Second 每秒成功的点击次数
Failed Hits Per Second 每秒失败的点击次数
Attempted Connections 尝试链接数

数据库服务器性能指标

指标

说明

User 0 Connections 用户连接数,也就是数据库的连接数量
Number of deadlocks 数据库死锁
Butter Cache hit 数据库Cache的命中情况

系统的瓶颈定义

性能项

命令

指标

CPU限制 vmstat 当%user+%sys超过80%时
磁盘I/O限制 Vmstat 当%iowait超过40%(AIX4.3.3或更高版本)时
应用磁盘限制 Iostat 当%tm_act超过70%时
虚存空间少 Lsps,-a 当分页空间的活动率超过70%时
换页限制 Iostat, stat 虚存逻辑卷%tm_act超过I/O(iostat)的30%,激活的虚存率超过CPU数量(vmstat)的10倍时
系统失效 Vmstat, sar 页交换增大、CPU等待并运行队列

  稳定系统的资源状态

性能项

资源

评价

CPU占用率 70%
85%
90%+ 很差
磁盘I/0 <30%
<40%
<50%+ 很差
网络 <30%带宽
运行队列 <2*CPU数量
内存 没有页交换
每个CPU每秒10个页交换
更多的页交换 很差

  通俗理解:

  日访问量

  常用页面最大并发数

  同时在线人数

  访问相应时间

  案例:

  最近公司一个项目,是个门户网站,需要做性能测试,根据项目特点定出了主要测试项和测试方案:

  一种是测试几个常用页面能接受的最大并发数(用户名参数化,设置集合点策略)

  一种是测试服务器长时间压力下,用户能否正常操作(用户名参数化,迭代运行脚本)

  一种则需要测试服务器能否接受10万用户同时在线操作,如果是用IIS做应用服务器的话,单台可承受的最大并发数不可能达到10万级,那就必须要使用集群,通过多台机器做负载均衡来实现;如果是用websphere之类的应用服务器的话,单台可承受的最大并发数可以达到10万级,但为性能考虑还是必须要使用集群,通过多台机器做负载均衡来实现;通常有1个简单的计算方式,1个连接产生1个session,每个session在服务器上有个内存空间大小的设置,在NT上是3M,那么10万并发就需要300G内存,当然实际使用中考虑其他程序也占用内存,所以准备的内存数量要求比这个还要多一些。还有10万个用户同时在线,跟10万个并发数是完全不同的2个概念。这个楼上已经说了。但如何做这个转换将10万个同时在线用户转换成多少个并发数呢?这就必须要有大量的历史日志信息来支撑了。系统日志需要有同时在线用户数量的日志信息,还需要有用户操作次数的日志信息,这2个数据的比例就是你同时在线用户转换到并发数的比例。另外根据经验统计,对于1个JAVA开发的WEB系统(别的我没统计过,给不出数据),一般1台双CPU、2G内存的服务器上可支持的最大并发数不超过500个(这个状态下大部分操作都是超时报错而且服务器很容易宕机,其实没什么实际意义),可正常使用(单步非大数据量操作等待时间不超过20秒)的最大并发数不超过300个。假设你的10万同时在线用户转换的并发数是9000个,那么你最少需要这样的机器18台,建议不少于30台。当然,你要是买个大型服务器,里面装有200个CPU、256G的内存,千兆光纤带宽,就算是10万个并发用户,那速度,也绝对是嗖嗖的。

  另外暴寒1下,光设置全部进入运行状态就需要接近6个小时。具体的可以拿1个系统来压一下看看,可能会出现以下情况:

  1、服务器宕机;

  2、客户端宕机;

  3、从某个时间开始服务器拒绝请求,客户端上显示的全是错误;

  4、勉强测试完成,但网络堵塞或测试结果显示时间非常长。假设客户端和服务器之间百兆带宽,百兆/10000=10K,那每个用户只能得到10K,这个速度接近1个64K的MODEM上网的速度;另外以上分析全都没考虑系统的后台,比如数据库、中间件等。

  1、服务器方面:上面说的那样的PC SERVER需要50台;

  2、网络方面:按每个用户50K,那至少5根百兆带宽独享,估计仅仅网络延迟就大概是秒一级的;

  3、如果有数据库,至少是ORACLE,最好是SYSBASE,SQLSERVER是肯定顶不住的。数据库服务器至少需要10台4CPU、16G内存的机器;

  4、如果有CORBA,那至少再准备10台4CPU、16G内存的机器;再加上负载均衡、防火墙、路由器和各种软件等,总之没个1000万的资金投入,肯定搞不定。

  这样的门户系统,由于有用户权限,所以并不象jackie所说大多是静态页面。但只要是多服务器的集群,那么我们就可以通过1台机器的测试结果来计算多台机器集群后的负载能力的,最多额外考虑一下负载均衡和路由上的压力,比如带宽、速度、延迟等。但如果都是在1台机器上变化,那我们只能做一些指标上的计算,可以从这些指标上简单判断一下是否不可行,比如10万并发用户却只有1根百兆带宽,那我们可以计算出每个用户只有1K带宽,这显然是不可行的。但实际的结果还是需要测试了才知道,毕竟系统压力和用户数量不是线性变化的。

  这一类系统的普遍的成熟的使用,以及很多软件在方案设计后就能够大致估算出系统的性能特点,都导致了系统在软件性能方面调优的比例并不大(当然不完全排除后期针对某些代码和配置进行优化后性能的进一步提高),更多的都是从硬件方面来考虑,比如增加内存、硬盘做RAID、增加带宽、甚至增加机器等。

  网络技术中的10M 带宽指的是以位计算, 就是 10M bit /秒 ,而下载时的速度看到的是以字节(Byte)计算的,所以10M带宽换算成字节理论上最快下载速度为: 1.25 M Byte/秒!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

web性能测试基本性能指标 的相关文章

  • Grails 3.x bootRun 失败

    我正在尝试在 grails 3 1 11 中运行一个项目 但出现错误 失败 构建失败并出现异常 什么地方出了错 任务 bootRun 执行失败 进程 命令 C Program Files Java jdk1 8 0 111 bin java
  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • JAXb、Hibernate 和 beans

    目前我正在开发一个使用 Spring Web 服务 hibernate 和 JAXb 的项目 1 我已经使用IDE hibernate代码生成 生成了hibernate bean 2 另外 我已经使用maven编译器生成了jaxb bean
  • Android:捕获的图像未显示在图库中(媒体扫描仪意图不起作用)

    我遇到以下问题 我正在开发一个应用程序 用户可以在其中拍照 附加到帖子中 并将图片保存到外部存储中 我希望这张照片也显示在图片库中 并且我正在使用媒体扫描仪意图 但它似乎不起作用 我在编写代码时遵循官方的Android开发人员指南 所以我不
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • 加速代码 - 3D 数组

    我正在尝试提高我编写的一些代码的速度 我想知道从 3d 整数数组访问数据的效率如何 我有一个数组 int cube new int 10 10 10 我用价值观填充其中 然后我访问这些值数千次 我想知道 由于理论上所有 3d 数组都存储在内
  • Spark 1.3.1 上的 Apache Phoenix(4.3.1 和 4.4.0-HBase-0.98)ClassNotFoundException

    我正在尝试通过 Spark 连接到 Phoenix 并且在通过 JDBC 驱动程序打开连接时不断收到以下异常 为简洁起见 下面是完整的堆栈跟踪 Caused by java lang ClassNotFoundException org a
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • 路径中 File.separator 和斜杠之间的区别

    使用有什么区别File separator和一个正常的 在 Java 路径字符串中 与双反斜杠相反 平台独立性似乎不是原因 因为两个版本都可以在 Windows 和 Unix 下运行 public class SlashTest Test
  • Mockito when().thenReturn 不必要地调用该方法

    我正在研究继承的代码 我编写了一个应该捕获 NullPointerException 的测试 因为它试图从 null 对象调用方法 Test expected NullPointerException class public void c
  • 无法解析插件 Java Spring

    我正在使用 IntelliJ IDEA 并且我尝试通过 maven 安装依赖项 但它给了我这些错误 Cannot resolve plugin org apache maven plugins maven clean plugin 3 0
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 十进制到八进制的转换[重复]

    这个问题在这里已经有答案了 可能的重复 十进制转换错误 https stackoverflow com questions 13142977 decimal conversion error 我正在为一个类编写一个程序 并且在计算如何将八进
  • Java按日期升序对列表对象进行排序[重复]

    这个问题在这里已经有答案了 我想按一个参数对对象列表进行排序 其日期格式为 YYYY MM DD HH mm 按升序排列 我找不到正确的解决方案 在 python 中使用 lambda 很容易对其进行排序 但在 Java 中我遇到了问题 f
  • Java TestNG 与跨多个测试的数据驱动测试

    我正在电子商务平台中测试一系列商店 每个商店都有一系列属性 我正在考虑对其进行自动化测试 是否有可能有一个数据提供者在整个测试套件中提供数据 而不仅仅是 TestNG 中的测试 我尝试不使用 testNG xml 文件作为机制 因为这些属性
  • 为什么HashMap不能保证map的顺序随着时间的推移保持不变

    我在这里阅读有关 Hashmap 和 Hashtable 之间的区别 http javarevisited blogspot sg 2010 10 difference Between hashmap and html http javar
  • 无法捆绑适用于 Mac 的 Java 应用程序 1.8

    我正在尝试将我的 Java 应用程序导出到 Mac 该应用程序基于编译器合规级别 1 7 我尝试了不同的方法来捆绑应用程序 1 日食 我可以用来在 Eclipse 上导出的最新 JVM 版本是 1 6 2 马文 看来Maven上也存在同样的
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview

随机推荐

  • MySQL数据库基础

    目录 数据库介绍 什么是数据库 数据库的分类 1 数据库的操作 创建数据库 显示数据库 使用数据库 删除数据库 2 表的操作 创建表 删除表 3 常用数据类型 插入数据 查询数据 从本篇起就又要开始新的篇章了 数据结构初级阶段的就告一段落了
  • 未能加载文件或程序集 或它的某一个依赖项。试图加载格式不正确的程序。问题解决

    我使用x64程序 运行时总报错 解决方案 仔细检查项目引用的dll 有win32的直接移除 换x64的 介绍如何使用工具查看dll是否是x86或者x64的 如何查看dll以及lib文件是32位还是64位 参考 https blog csdn
  • RestSharp访问带有账号密码的接口地址实现方法

    可以将账号密码封装成一个HttpBasicAuthenticator 然后将其当作参数放置到RestSharpClient中 即可成功解决 其在postman中的表现是
  • Linux 压缩解压命令

    linux解压 tar命令 tar命令 tar cxtzjvfpPN 文件与目录 参数 c 建立一个压缩文件的参数指令 create 的意思 x 解开一个压缩文件的参数指令 t 查看 tarfile 里面的文件 特别注意 在参数的下达中 c
  • sql常用查询语句

    单表查询 查询pname和price 去掉pname和price同时重复的数据 select distinct pname price from product 查询商品名和价格并起别名 select pname as 商品名称 price
  • python三种等待元素方法

    在做web或app的自动化测试经过会出现找不到元素而报错的情况 很多时候是因为元素 还没有被加载出来 查找的代码就已经被执行了 自然就找不到元素了 那么我可以用等待 元素加载完成后再执行查找元素的code Python里有三种等待的方式 一
  • unity,  在编辑界面中隐藏公开变量

    unity默认声明为public的变量都是在编辑界面可见的 如果要隐藏的话就可以这样做 一种是使用属性 Public float Age get set 另一种是使用标签 HideInInspector public float dista
  • 适配iPhoneX详解之iOS项目添加启动图片LaunchImage的3种方式

    启动图片 测试环境 Xcdoe 9 iOS11 这篇文章 主要是解决公司发布多个马甲app 启动图片和图片放到了项目普通文件夹下的情况 文章可以参考我之前写的 如果公司只是固定的产品 那直接放到Images xcassets 下或者使用La
  • TDR土壤水分检测传感器方案设计

    1 TDR土壤水分检测传感器方案 TDR 时域反射 法是介电测量中的高速测量技术 以 Feidegg 1969 等人对许多液体介电特性的研究为基础而发展起来的 最初被用来定位通讯电缆的缺陷 TDR 是一个类似于雷达系统的系统 有较强的独立性
  • chatgpt赋能python:如何把Python添加到Path

    如何把Python添加到Path Python是一种流行的编程语言 但是如果您想在命令行或终端中使用它 您需要将它添加到您的环境变量中 这篇文章将向您展示如何将Python添加到PATH中 以便您可以在任何地方使用Python 什么是PAT
  • 青少年编程python一级真题_青少年编程能力等级测评试卷二及答案 Python编程(一级)...

    青少年编程能力等级测评试卷 Python编程 一级 考试时间90分钟 满分100分 一 单项选择题 共20题 每题2 5分 共50分 1 运行下方代码段 输出是6 则输入的可能是 C a eval input print a A 8 2B
  • 《数据库系统概念》11-扩展的E-R特性

    虽然基本的E R特性可以应对大部分数据库建模 但为了使用方便 也提供扩展的E R特性一 特化Specialization有时一个实体集会保护若干子集 这些子集各自具有不同的属性 比如person可以包含employee和student子集
  • vsCode 配置 html 文件警告

    vsCode 配置 html 文件警告 问题描述 IDE vsCode 会默认根据自己的规则来检测 html 文件书写格式 但是在实际项目中模板的格式可能会有与规则有些不同 比如 第一行必须为声明 属性不能为空等 本人有点偏强迫症 要找办法
  • 创新造型,引领未来——探索OLED透明屏造型的创新与应用

    OLED透明屏作为一项颠覆性的显示技术 正在以其卓越的透明度和灵活性在各个行业中崭露头角 而在OLED透明屏的应用中 造型设计的创新成为了吸引消费者和提升用户体验的重要因素 一 OLED透明屏的特点 OLED透明屏采用有机发光二极管技术 其
  • python加载dll_C#初识 *.dll文件及动手编写简单应用

    DLL的概念 DLL Dynamic Link Library 文件为动态链接库文件 又称 应用程序拓展 是软件文件类型 在Windows中 许多应用程序并不是一个完整的可执行文件 它们被分割成一些相对独立的动态链接库 即DLL文件 放置于
  • SGD和Adam(转载)

    https blog csdn net weixin 42398658 article details 84525917 另在一篇文章中 我们介绍了随机梯度下降的细节以及如何解决陷入局部最小值或鞍点等问题 在这篇文章中 我们看看另一个困扰神
  • Unity3D编辑器扩展——EditorWindow交互响应事件

    重点 需要在OnGUI方法里监听事件 Unity的编辑器界面中由这么一些事件 EventType MouseDown 鼠标按下 MouseUp 鼠标抬起 MouseDrag 鼠标拖动 KeyDown 按键按下 KeyUp 按键抬起 Scro
  • js sum函数

    addnum function num1 num2 const num1Digits num1 toString split 1 length const num2Digits num2 toString split 1 length co
  • Qt新建项目No valid kits found解决思路

    第一次用Qt Creator创建Project时 进入Kit Selection窗口后 会提示No Valid kits found Please add a kit in the options
  • web性能测试基本性能指标

    文章出处 https blog csdn net qiguiting article details 11584397 Web性能测试的部分概况一般来说 一个Web请求的处理包括以下步骤 1 客户发送请求 2 web server接受到请求