[转]API性能测试基本性能指标及要求
原文链接http://blog.csdn.net/strawbingo/article/details/46458959
指标的基本概念
1、事务(Transaction)
在web性能测试中,一个事务表示一个“从用户发送请求->web server接受到请求,进行处理-> web server向DB获取数据->生成用户的object(页面),返回给用户”的过程,一般的响应时间都是针对事务而言的。
2、请求响应时间
请求响应时间指的是从客户端发起的一个请求开始,到客户端接收到从服务器端返回的响应结束,这个过程所耗费的时间,在某些工具中,响应通常会称为“TTLB”,即"Time To Last Byte",意思是从发起一个请求开始,到客户端接收到最后一个字节的响应所耗费的时间,响应时间的单位一般为“秒”或者“毫秒”。一个公式可以表示:响应时间=网络响应时间+应用程序响应时间。
(1)在1秒钟之内,页面给予用户响应并有所显示,可认为是“很不错的”;
(2)在1~2秒钟内,页面给予用户响应并有所显示,可认为是“好的”;
(3)在2~3秒钟内,页面给予用户响应并有所显示,可认为是“勉强接受的”;
(4)超过3秒就让人有点不耐烦了,用户很可能不会继续等待下去;
3、事务响应时间
事务可能由一系列请求组成,事务的响应时间主要是针对用户而言,属于宏观上的概念,是为了向用户说明业务响应时间而提出的.例如:跨行取款事务的响应时间就是由一系列的请求组成的.事务响应时间是直接衡量系统性能的参数.
4、并发用户数
并发一般分为2种情况。一种是严格意义上的并发,即所有的用户在同一时刻做同一件事情或者操作,这种操作一般指做同一类型的业务。比如在信用卡审批业务中,一定数目的拥护在同一时刻对已经完成的审批业务进行提交;还有一种特例,即所有用户进行完全一样的 操作,例如在信用卡审批业务中,所有的用户可以一起申请业务,或者修改同一条记录。
另外一种并发是广义范围的并发。这种并发与前一种并发的区别是,尽管多个用户对系统发出了请求或者进行了操作,但是这些请求或者操作可以是相同的,也可以是不同的。对整个系统而言,仍然是有很多用户同时对系统进行操作,因此也属于并发的范畴。
可以看出,后一种并发是包含前一种并发的。而且后一种并发更接近用户的实际使用情况,因此对于大多数的系统,只有数量很少的用户进行“严格意义上的并发”。对于WEB性能测试而言,这2种并发情况一般都需要进行测试,通常做法是先进行严格意义上的并发测试。严格意义上的用户并发一般发生在使用比较频繁的模块中,尽管发生的概率不是很大,但是一旦发生性能问题,后果很可能是致命的。严格意义上的并发测试往往和功能测试关联起来,因为并发功能遇到异常通常都是程序问题,这种测试也是健壮性和稳定性测试的一部分。
用户并发数量:关于用户并发的数量,有2种常见的错误观点。 一种错误观点是把并发用户数量理解为使用系统的全部用户的数量,理由是这些用户可能同时使用系统;还有一种比较接近正确的观点是把在线用户数量理解为并发用户数量。实际上在线用户也不一定会和其他用户发生并发,例如正在浏览网页的用户,对服务器没有任何影响,但是,在线用户数量是计算并发用户数量的主要依据之一。
5、吞吐量
指的是在一次性能测试过程中网络上传输的数据量的总和.吞吐量/传输时间,就是吞吐率.
6、TPS(transaction per second)
每秒钟系统能够处理的交易或者事务的数量.它是衡量系统处理能力的重要指标.
7、点击率
每秒钟用户向WEB服务器提 交的HTTP请求数.这个指标是WEB应用特有的一个指标:WEB应用是"请求-响应"模式,用户发出一次申请,服务器就要处理一次,所以点击是WEB应用能够处理的交易的最小单位.如果把每次点击定义为一个交易,点击率和TPS就是一个概念.容易看出,点击率越大,对服务器的压力越大.点击率只是一个性能参考指标,重要的是分析点击时产生的影响。需要注意的是,这里的点击并非指鼠标的一次单击操作,因为在一次单击操作中,客户端可能向服务器发出多个HTTP请求.
8、资源利用率
指的是对不同的系统资源的使用程度,例如服务器的CPU利用率,磁盘利用率等.资源利用率是分析系统性能指标进而改善性能的主要依据,因此是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个页交换 |
坏 |
|
更多的页交换 |
很差 |
接口性能要求
http接口性能要求
该要求不包括文件上传 等重量级接口
指标名称
|
要求
|
优先级
|
备注
|
---|---|---|---|
响应时间 | 500 millisecond | 1 | |
请求成功率 | 99% | 2 | |
TPS |
在满足预期要求的情况下服务器状态稳定,单台服务器TPS要求在1000左右 |
3 | |
资源使用率 | 要求在TPS正常幅度的情况下资源使用率幅度平稳,服务器状态平稳 | 3 | 要求接口的内部实现不能占用太多资源 |
数据库死锁 | 0,要求接口在使用过程中不会造成数据库死锁 | 1 | |
CPU限制 | 要求接口在使用过程中不会出现大量的计算 | 3 | |
内存 | 要求接口在使用过程中不会出现内存大量消耗的情况 | 3 | |
dubbo接口性能要求
指标名称
|
要求
|
优先级
|
备注
|
---|---|---|---|
响应时间 | 500 millisecond | 1 | |
请求成功率 | 99% | 2 | |
TPS |
在满足预期要求的情况下服务器状态稳定,单台服务器TPS要求在1000左右 |
3 | |
资源使用率 | 要求在TPS正常幅度的情况下资源使用率幅度平稳,服务器状态平稳 | 3 | 要求接口的内部实现不能占用太多资源 |
数据库死锁 | 0,要求接口在使用过程中不会造成数据库死锁 | 1 | |
CPU限制 | 要求接口在使用过程中不会出现大量的计算 | 3 | |
内存 | 要求接口在使用过程中不会出现内存大量消耗的情况 | 3 | |
|
[转]API性能测试基本性能指标及要求的更多相关文章
- API性能测试基本性能指标及要求
略 适用 Lifeix 所有后台应用. 1.事务(Transaction) 在web性能测试中,一个事务表示一个“从用户发送请求->web server接受到请求,进行处理-> web s ...
- Java Stream API性能测试
已经对Stream API的用法鼓吹够多了,用起简洁直观,但性能到底怎么样呢?会不会有很高的性能损失?本节我们对Stream API的性能一探究竟. 为保证测试结果真实可信,我们将JVM运行在-ser ...
- 【转】web性能测试基本性能指标
Web性能测试的部分概况一般来说,一个Web请求的处理包括以下步骤: (1)客户发送请求 (2)web server 接受到请求,进行处理: (3)web server 向DB获取数据: (4)web ...
- Web性能测试基本性能指标
Web性能测试的部分概况一般来说,一个Web请求的处理包括以下步骤: (1)客户发送请求 (2)web server接受到请求,进行处理: (3)web server向DB获取数据: (4)webse ...
- java,netcore和nodejs api性能测试
一. 前言 作为有点经验的码农,现在退休在家带孩子.闲来无事,想对使用过的框架(如果写语言容易引战,php是世界上最好的语言)做一个性能测试. 二. 背景 由于毕业后刚开始接触的编程语言是C#, 从a ...
- 【Jmeter】api性能测试总结
1.前提概念 平时常用的性能测试:api性能测试+场景性能测试:今天就说一说api性能测试 2.如何进行性能测试? 需求:对某api进行性能测试,看看最大承受的并发数,分析下图表 分析: 错误思路:当 ...
- JMeter学习-030-JMeter性能测试常用之事务控制器实例
通常进行性能测试时,我们一般仅考虑主要的数据返回,不考虑页面渲染所需要的数据(例如:css.js.图片等).但当我们需要衡量打开一个页面(页面渲染完成)的性能时,我们就需要考虑完成页面渲染所需要的图片 ...
- Web性能测试中的几个关键指标
系统吞吐量 吞吐量指单位时间内系统处理的请求数量,体现系统的整体处理能力.对于网站,可以用"请求数/秒"或是"页面数/秒"来衡量,也可以用"访问人数/ ...
- 【百度地图API】多家地图API内存消耗对比测验(带源码)
原文:[百度地图API]多家地图API内存消耗对比测验(带源码) 任务描述: 啊,美妙的春节结束了.酸奶小妹和妈妈的山西平遥之旅也宣告成功!距离平遥古城7km,有一个同样身为“世界文化遗产”的寺庙,叫 ...
随机推荐
- XML解析的四种方式
1.说明 XML是EXtensible Markup Language, 即可扩展标记语言, 是一种通用的数据交换格式, 它的平台无关性.语言无关性.系统无关性, 给数据集成与交互带来了极大的方便. ...
- C#中的记录(record)
从C#9.0开始,我们有了一个有趣的语法糖:记录(record) 为什么提供记录? 开发过程中,我们往往会创建一些简单的实体,它们仅仅拥有一些简单的属性,可能还有几个简单的方法,比如DTO等等,但是这 ...
- 分享一款开源堡垒机-jumpserver
本文主文章地址为:https://blog.csdn.net/KH_FC JumpServer是由FIT2CLOUD(飞致远)公司旗下一款开源的堡垒机,这款也是全球首款开源的堡垒机,使用 GNU GP ...
- 初识python: os 模块
偷下懒,直接看代码吧: #!/user/bin env python # author:Simple-Sir # time:2019/8/21 16:38 # os 模块 import os # os ...
- Yum安装Maven
一.安装 wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum. ...
- 【PTA】字符串正反序连接
将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中. 函数接口定义: void fun (char *s, char *t); 其中s 和t都是用户传入的参数.函数将s所指字符串的正序 ...
- 【Java】回形数
回形数 键盘读入一个整数n(1-20),以n为矩阵大小,把1,2,3,4,5-按顺时针螺旋的形式填入. import java.util.Scanner; public class HuiXingSh ...
- idea环境下SpringBoot Web应用引入JSP
1. 环境 开发环境:idea2019.3 jkd版本:1.8 springboot版本:2.6.2 2. 引入JSP的步骤 2.1 新建工程,引入依赖 这里只是解析jsp,因此只需要引入spring ...
- Rust 实现Netty HashedWheelTimer时间轮
目录 一.背景 二.延迟队列-时间轮 三.Netty 时间轮源码分析 四.Rust实现HashedWheelTimer 五.总结思考 一.背景 近期在内网上看到一篇文章,文中提到的场景是 系统自动取消 ...
- 切换不同的echarts时,出现图标缩小,报警告,Can’t get dom width or height!
出现这样的原因是因为,在切换的时候,图表所对应的标签还没有显示出来,最好将代码放在$nextick里面执行,并且,采用使用v-if进行切换 转载:https://www.pianshen.com/ar ...