前言
作为后端开发我们可能对接口的响应速度没有太大感觉,但是作为测试与前端乃至客户,他们对接口的性能是有直观感受的.本人做过前端,做过测试,目前专注做后端,近期团队有一个任务是关于接口优化的其实目标很明确就是针对性能较差的接口进行优化,尽可能的提升响应速度,我拿到任务后首先对其进行了分析,我发现这种任务一是需要优化人员对代码执行过程有深刻理解和优化经验,二是优化人员需要知道优化标准,前一点这里不做叙述(代码撸多了自然有经验),本文主要想叙述下接口优化的标准.
废话说了这么多,现在不如正题!
基本概念
事务(Transaction)
在web性能测试中,一个事务表示一个“从用户发送请求->web server接受到请求,进行处理-> web server向DB获取数据->生成用户的object(页面),返回给用户”的过程,一般的响应时间都是针对事务而言的。
请求响应时间
请求响应时间指的是从客户端发起的一个请求开始,到客户端接收到从服务器端返回的响应结束,这个过程所耗费的时间.
(1)在1秒钟之内,页面给予用户响应并有所显示,可认为是“很不错的”;
(2)在1~2秒钟内,页面给予用户响应并有所显示,可认为是“好的”;
(3)在2~3秒钟内,页面给予用户响应并有所显示,可认为是“勉强接受的”;
(4)超过3秒就让人有点不耐烦了,用户很可能不会继续等待下去;
用户并发数
(1)接口并发:针对某接口在同一时间的所有用户请求
(2)系统并发:针对整个系统平台在同一时间的所有用户请求
两者既有关联也有区别,后者范围囊括前者
吞吐量
指的是在一次性能测试过程中网络上传输的数据量的总和.吞吐量/传输时间,就是吞吐率.简单理解为同一时间请求的数据量(字节大小的累加)
TPS(transaction per second)
每秒钟系统能够处理的交易或者事务的数量.它是衡量系统处理能力的重要指标.
带宽
简单来说,带宽是同一时刻网络所能传输的最大数据量.公式:带宽 = 并发量 *数据量
QPS
QPS=并发量/花费的时间
TP90标准
TP90属于接口性能测试与描述的行业标准.那么什么是TP90呢?
当我们希望向别人解释,有一堆数据(数据的取值0~100)普遍都很小的时候,我们会这样跟对方说,有超过一半的数都小于10,或有一般的数小于5 。
那么这个在统计学里面是这样描述的【TP50=10 或者 TP50=5】
那么,什么是TP90呢?有90%的数小于X 那么TP90 = X 。比如,我考试考了60分,告诉我爸,我爸拿起竹条准备抽打我的时候我就说,这次考试的TP90 = 50啊,我爸估计就不会打了我,因为TP90 = 50表示班里有90%的人考试低于50分,而我考了60分,不是很棒吗?所以,我通过用TP90标准向我爸解释了这次考试分数普遍很低。
常见指标
通用指标
指标 | 说明 |
---|---|
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 | 尝试链接数 |
稳定系统的资源状态
性能项 | 资源 | 评价 |
---|---|---|
CPU占用率 | 70% | 好 |
85% | 坏 | |
90%+ | 很差 | |
磁盘I/O | <30% | 好 |
<40% | 坏 | |
<50%+ | 很差 | |
网络 | <30%带宽 | 好 |
运行队列 | <2*CPU数量 | 好 |
内存 | 没有页交换 | 好 |
每个CPU每秒10个页交换 | 坏 | |
更多的页交换 | 很差 |
HTTP接口性能指标
指标名称 | 要求 | 优先级 | 备注 |
---|---|---|---|
响应时间 | 500 millisecond(毫秒) | 1 | 500毫秒是针对正常接口的响应上线,这是基本响应时间必须包装.有些情况下接口内业务可能调用其它第三方服务,针对这种复合接口应尽量控制在500毫秒,有些特殊情况如文件解析,上传等属于特例.符合接口中的子接口一般控制在10毫秒左右 |
请求成功率 | 99% | 2 | |
TPS | 在满足预期要求的情况下服务器状态稳定,单台服务器TPS要求在1000左右 | 3 | |
资源使用率 | 要求在TPS正常幅度的情况下资源使用率幅度平稳,服务器状态平稳 | 3 | 要求接口的内部实现不能占用太多资源 |
数据库死锁 | 0,要求接口在使用过程中不会造成数据库死锁 | 1 | |
CPU限制 | 要求接口在使用过程中不会出现大量的计算 | 3 | |
内存 | 要求接口在使用过程中不会出现内存大量消耗的情况 | 3 |
本文参考内容如下:
https://blog.csdn.net/aibisoft/article/details/39340231
https://blog.csdn.net/u010833547/article/details/60961982
版权声明:本文为博主原创文章,欢迎转载,转载请注明作者、原文超链接,感谢各位看官!!!
本文出自:monkeyGeek
座右铭:生于忧患,死于安乐
欢迎志同道合的朋友一起交流、探讨!
