性能的指标参数

名词解释

1. 线程数


能以线程式并发的方式,帮我们达成“短时间内向服务器发送大量请求”这一任务。

多线程式并发测试工具,顾名思义,会启动复数个线程,让每个线程独立向服务器端发出请求。

2. TPS Transactions Per Second(每秒传输的事物处理个数)

即服务器每秒处理的事务数。TPS包括一条消息入和一条消息出,加上一次用户数据库访问.

一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。


TPS的高低也会像木桶效应的影响与多种因素相关,当一处存在短板时会导致整个接口乃至系统的出现TPS上不去的情况。

3. 响应时间

从用户发送一个请求到用户接收到服务器返回的响应数据这段时间就是响应时间

关键路径:下图为一次http请求经过的路径,请求会经过网络发送到web服务器进行处理,如果需要操作DB,再由网络转发到数据库进行处理,然后返回值给web服务器,web服务器最后把结果数据通过网络返回给客户端

Response time = (N1+N2+N3+N4)+ (A1+A2+a3),即:(网络时间 + 应用程序处理时间)
事务平均响应时间。
单个事务平均下来完成的速度越快,那么单位时间内能完成的事务数就越多,TPS就就越高

4. 95分位响应时间

请求数的响应时间从小到大排序后,剔除末端的百分之五的响应时间后得到的最高的响应时间称为95分位的响应时间,这样可以将瞬间的毛刺(尖峰)去掉,同时95分位与平均响应时间之差越小,表示系统的响应越趋于稳定

5. 请求错误个数

顾名思义:当前请求中出现的错误个数,可能是由于断言问题、服务器响应、资源丢失等问题造成的,常见的服务器响应码有404/500/502等,当出现错误个数我们可以调取jmeter的log来查看相应的报错日志。

常见的请求状态码

200:正确的请求返回正确的结果,如果不想细分正确的请求结果都可以直接返回200

301:请求成功,但是资源被永久转移。比如说,我们下载的东西不在这个地址需要去到新的地址。

400:请求出现错误,比如请求头不对等。

401:没有提供认证信息。请求的时候没有带上 Token 等。

403:请求的资源不允许访问。就是说没有权限。

404:请求的内容不存在。

500:服务器错误。代码有问题,需看下服务端代码

502:网关错误,多为配置了Nginx网关,未启动相应的服务

503:服务暂时不可用。服务器正好在更新代码重启。

6. 系统CPU使用率

使用率包含user(用户)和sys(系统),CPU使用率指的是程序在运行期间实时占用的CPU百分比,这是对一个时间段内CPU使用状况的统计。通过这个指标可以看出在某一个时间段内CPU被占用的情况。
在压测过程中user+sys的应控制在80%以下,高于80%服务器将存在一定的负载压力,服务器有瓶颈,导致压测结果不准。
top命令查看服务器CPU使用率和负载

7. 系统CPU负载

cpu负载是衡量一台服务器使用资源情况的提现,当负载越高时,服务器的压力越大。
如:一座桥上,没有车流量负载为0,为1时刚好满足桥面的正常通行,但是车流已经很堵了,如果到2到3则说明,桥已经堵的基本动不了了,车辆都停在次等待通行,cpu负载也如此,但是理想情况是满负载情况下的百分之70%。
如何计算服务器的负载?
grep ‘model name’ /proc/cpuinfo | wc -l
服务器的满负载是32,所以负载低于22.4属于正常,越高则可能影响到压测数据的分析。

8. 流量

流量的消耗包好进入服务器的流量和服务器往外部发送的流量,
进服务器的流量: 接口请求进入的流量,另外一方面 是从db/redis读取数据返回来的流量
出服务器的流量: 发起去读redis/mysql的语句,另外一方面就是服务器返回给压力机的返回结果流量
流量的高低可能会受服务器的带宽影响,当数据流量很大时,服务器已达到了最大带宽使用,会导致TPS无法继续增长的问题

性能瓶颈浅析(TPS无法提高)

1、网络带宽
在压力测试中,有时候要模拟大量的用户请求,如果单位时间内传递的数据包过大,超过了带宽的传输能力,那么就会造成网络资源竞争,间接导致服务端接收到的请求数达不到服务端的处理能力上限。

2、连接池
可用的连接数太少,造成请求等待。连接池一般分为服务器连接池(比如Tomcat)和数据库连接池(或者理解为最大允许连接数也行)。

3、垃圾回收机制
因为java的的堆栈内存是动态分配,具体的回收机制是基于算法,回收如果较频繁,那么对TPS
也是有一定影响的,因为垃圾回收其本身就会占用一定的资源。

4、数据库配置
高并发情况下,如果请求数据需要写入数据库,且需要写入多个表的时候,如果数据库的最大连接数不够,或者写入数据的SQL没有索引没有绑定变量,抑或没有主从分离、读写分离等

5、硬件资源
包括CPU(配置、使用率等)、内存(占用率等)、磁盘(I/O、页交换等)。

6、压力机
比如jmeter,单机负载能力有限,如果需要模拟的用户请求数超过其负载极限,也会间接影响TPS(这个时候就需要进行分布式压测来解决其单机负载的问题,一般情况单台够用)。

7、业务逻辑
业务解耦度较低,较为复杂,整个事务处理线被拉长导致的问题。

8、系统架构
比如是否有缓存服务,缓存服务器配置,缓存命中率、缓存穿透以、缓存过期、是否含有死锁等,都会影响到测试结果。

性能拐点图


图中有三条曲线,分别表示资源的利用情况

  1. Utilization,包括硬件资源和软件资源
  2. 吞吐量(Throughput,这里是指每秒事务数)
  3. 响应时间(Response Time)。

图中坐标轴的横轴从左到右表现了并发用户数(Number of Concurrent Users)的不断增长。

在这张图中我们可以看到,最开始,随着并发用户数的增长,资源占用率和吞吐量会相应的增长,但是响应时间的变化不大;
不过当并发用户数增长到一定程度后,资源占用达到饱和,吞吐量增长明显放缓甚至停止增长,而响应时间却进一步延长。
如果并发用户数继续增长,你会发现软硬件资源占用继续维持在饱和状态,但是吞吐量开始下降,响应时间明显的超出了用户可接受的范围,并且最终导致用户放弃了这次请求甚至离开。

当系统的负载等于最佳并发用户数时,系统的整体效率最高,没有资源被浪费,用户也不需要等待;当系统负载处于最佳并发用户数和最大并发用户数之间时,系统可以继续工作,但是用户的等待时间延长,满意度开始降低,并且如果负载一直持续,将最终会导致有些用户无法忍受而放弃;而当系统负载大于最大并发用户数时,将注定会导致某些用户无法忍受超长的响应时间而放弃。

根据此图可以知道,当性能出现瓶颈时往往伴随着响应时间的成倍增长和吞吐量的下降,在我们进行压测的过程中可以适当增加并发的线程数,来根据接口的响应时间和吞吐量的值来判断是否出现了性能瓶颈,当出现性能的瓶颈时我们可以根据前面所讲到的方式去观察服务器的资源使用情况,数据库连接池等配置来对接口进行分析

【性能测试基础】性能专有名词解析及性能瓶颈分析技巧相关推荐

  1. 《图像分析基础》的专有名词解析

    1.图像处理 英文:image processing 定义:输入是图像数据,输出也是图像数据.涉及到"输入是图像数据,输出也是图像数据"的理论与方法,是图像处理的研究范畴.比如图像 ...

  2. 24基础指标、obv使用方法及分析技巧

    OBV指标存在的问题及其修正方法 由于OBV不是直接对股价做出分析的指标,却又是按照收盘价的升或降来计算的,这样就不可避免地存在是否合理的问题,对某些个股(常见于交投清淡者)来说尤其如此.如股价在某日 ...

  3. 【性能学习】性能测试基础

    学习链接:<性能学习实战30讲> 授课人:高楼 课程从三个部分进行阐述: 第一个模块是性能测试基础篇.在这个模块里澄清一些性能测试的基础概念,讲解一些关键部分.但并不是对概念的简单描述,而 ...

  4. 性能测试和性能分析的基础概念

    1.1.   性能测试的基础概念 性能可以理解为一个系统实现其功能的能力,从宏观上可以描述为系统能够稳定运行,高并发访问时系统不会出现宕机,系统处理完成用户请求需要的时间,系统能够同时支撑的并发访问量 ...

  5. 软件性能测试分析与调优实践之路---性能测试和性能分析的基础概念

    1.1.   性能测试的基础概念 性能可以理解为一个系统实现其功能的能力,从宏观上可以描述为系统能够稳定运行,高并发访问时系统不会出现宕机,系统处理完成用户请求需要的时间,系统能够同时支撑的并发访问量 ...

  6. 熟读《阿里巴巴java开发手册》(六、工程结构,七、 设计规约,专有名词解释)

    目录 六.工程结构 (一) 应用分层 (二) 二方库依赖 (三) 服务器 七. 设计规约 附 2: 专有名词解释 六.工程结构 (一) 应用分层 1. [推荐] 图中默认上层依赖于下层,箭头关系表示可 ...

  7. 大型IT系统性能测试入门经典-系统性能测试基础

    本文摘自陈绍英老师<大型IT系统性能测试入门经典>一书. 第一章 系统性能测试基础 下面是很多公司常见的和性能测试相关的工作安排: 预计有3000人使用系统,去测一下系统1000个用户的并 ...

  8. 性能测试-基础+中级

    持续更新- 标记 性能测试基础 1. 性能测试起步 1.1 性能测试的应用场景 1.2 不同的角度看性能 1.3 影响性能的因素 2. 性能测试概述 2.1 性能测试定义和分类 2.2 常用性能测试术 ...

  9. 性能测试-基础+中级(二)【前端性能测试】

    系列文章目录-性能测试 性能测试-基础+中级(一)[概述+流程+工具+模型+mysql事务] 文章目录 系列文章目录-性能测试 性能测试-基础+中级(一)[概述+流程+工具+模型+mysql事务] 7 ...

  10. 评估服务基础性能应该参考那些指标?

    当谈到网络服务性能的时候,很多人都会采用一些单一性的指标数据作为性能参考,如支持多少在线,能跑到多少带宽等:实际上这些单一性的指标数据并不能反映服务的基础性能,毕竟应用场景是多样性的:那更好判断一个服 ...

最新文章

  1. 手把手教你 用C++实现一个 可持久化 的http_server
  2. pandas dropna
  3. 怎样设置java home_如何在Windows 7上设置java_HOME?
  4. [MIPS汇编语言]简单排序实现
  5. 把字符串3,1,2,4以,分割拆分为数组,数组元素并按从小到大的顺序排列
  6. android studio 在gradle 中配置签名文件
  7. linux端口 fcs校验,我如何接收错误的以太网帧并禁用CRC / FCS计算?
  8. iphone中结束电话后返回自己的应用
  9. Centos安装php提示virtual memory exhausted: Cannot allocate memory
  10. 原DTCoreText学习(三)-自定义DTAttributedTextCell
  11. 第4章 神经网络和误差反向传播法
  12. MySQL重要但容易被忽略_MySQL自定义函数存储过程
  13. 0714.买卖股票的最佳时机含手续费【贪心算法】
  14. 酷开系统AI智能让生活更简单化
  15. 双重认证怎么开_facebook bm认证很重要
  16. Vue之Hello World!
  17. ABOUT DOTA
  18. Rime默认为英文状态
  19. 猿创征文|聊一聊我在字节跳动做项目质量改进的经验
  20. ATtiny13与Proteus仿真-8位通用定时器/计数器与PWM仿真

热门文章

  1. Geforce Experience无法登录的解决方法
  2. typora 编辑器菜单栏不见了:打开了一体化模式
  3. 网络口碑营销分几步完成?网络口碑营销的步骤
  4. 【MySQL-关键字】MySQL中的desc什么意思?有哪些作用?
  5. cps linux命令,Linux基本网络及文件传输命令
  6. springboot基于协同过滤算法的书籍推荐毕业设计源码101555
  7. html添加右键菜单,JS添加右键菜单
  8. OSChina 周六乱弹 —— 正负能量交锋,谁是赢家?
  9. Advanced Installer Architect创作工具
  10. kali清理_linux下清理系统垃圾