性能场景和性能需求指标
目录
一 性能场景
1、基准性能场景
2、容量性能场景
3、稳定性性能场景
4、异常性能场景
二 性能需求指标
1、业务指标
2、技术指标
2.1 时间指标 RT
2.2 容量指标 TPS
2.3 资源利用率
3、指标之间的关系
“TPS”与“响应时间”
“用户数”与“TPS”与“压力工具中的线程数”
最近在网上搜索了很多性能测试的资料,都不能让我有深入的理解,直到看了高楼老师的《性能测试实战30讲》和《高楼的性能工程实战课》培训课程,才觉得对性能有了一个全貌的认知;
虽然做过几个性能测试项目,但是也仅仅局限在,就像老师所说“就是做些脚本、参数化、关联,压起来之后,再扔出一个结果。”
老师的课程内容很丰富,目前还在学习阶段,并不能完全消化理解,但是又想记录下来一些东西以加深理解,所以有了这篇文章,本文的描述和图片全部摘自老师的培训课程。
“性能测试”不仅仅包括测试,还包括分析和调优。
性能测试是针对系统的性能指标,建立性能测试模型,制定性能测试方案,制定监控策略,在场景条件之下执行性能场景,分析判断性能瓶颈并调优,最终得出性能结果来评估系统的性能指标是否满足既定值。

一 性能场景
1、基准性能场景
也可称之为单交易容量,即将每一个业务都压到最大TPS,从而为后续场景做数据比对。

2、容量性能场景
也可称之为混合容量性能场景,即将所有业务根据比例加到一个场景中,在数据、软硬件环境、监控等的配合之下,分析瓶颈并调优的过程。

3、稳定性性能场景
核心就是时长。在长时间的运行之下,观察系统的性能表现,分析瓶颈并调优的过程。
- 稳定性的时间长度要合理,也就是说要合理判断稳定性场景需要运行多长时间;
- 稳定性使用的TPS量级要合理,也就是说我们要合理判断稳定性场景应该用多大的压力执行。
4、异常性能场景
显然就是异常的定义最为重要。之前我们常用的手段就是宕主机、宕应用、宕网卡。随着云基础架构的发展,现在我们还有宕容器、宕虚机、宕缓存、宕队列、宕集装箱、宕流控、宕熔断等等。实际的场景中要模拟什么样的异常,一定是根据系统的业务架构和部署架构分析而来的。不是看到什么都在宕一下。
二 性能需求指标
1、业务指标
所有的技术指标都是在有业务场景的前提下制定的,而技术指标和业务指标之间也要有详细的换算过程。

2、技术指标

2.1 时间指标 RT
响应时间指的是客户端发出请求到得到响应的整个过程所经历的时间;
2.2 容量指标 TPS
TPS(Transactions Per Second),每秒事务数;
在性能测试过程中,TPS之所以重要,是因为它可以反应出一个系统的处理能力。

其中的T为事务,事务就是统计了一段脚本的执行时间,性能中TPS中T的定义取决于场景的目标和T的作用。
如果我们要单独测试接口1、2、3,那T就是接口级的;如果我们要从用户的角度来下一个订单,那1、2、3应该在一个T中,这就是业务级的。
| 接口级脚本 | ——事务start(接口1) 接口1脚本 ——事务end(接口1) |
| ——事务start(接口2) 接口2脚本 ——事务end(接口2) | |
| ——事务start(接口3) 接口3脚本 ——事务end(接口3) | |
| 业务级接口层脚本 (就是用接口拼接出一个完整的业务流) | ——事务start(业务A) 接口1脚本 - 接口2(同步调用) 接口1脚本 - 接口3(异步调用) ——事务end(业务A) |
| 用户级脚本 | ——事务start(业务A) 点击0 - 接口1脚本 - 接口2(同步调用) 点击0 - 接口1脚本 - 接口3(异步调用) ——事务end(业务A) |
2.3 资源利用率
CPU 内存 IO 网络;
3、指标之间的关系
“TPS”与“响应时间”

图中蓝线表示TPS,黄色表示响应时间。
在TPS增加的过程中,响应时间一开始会处在较低的状态,也就是在A点之前。
接着响应时间开始有些增加,直到业务可以承受的时间点B,这时TPS仍然有增长的空间。
再接着增加压力,达到C点时,达到最大TPS。
我们再接着增加压力,响应时间接着增加,但TPS会有下降(请注意,这里并不是必然的,有些系统在队列上处理得很好,会保持稳定的TPS,然后多出来的请求都被友好拒绝)。
最后,响应时间过长,达到了超时的程度。
“用户数”与“TPS”与“压力工具中的线程数”

上面的一个框中有四个箭头,每个都代表着相同的事务。
在上面这张示意图中,其实压力工具是4个并发线程,由于每个线程都可以在一秒内完成4个事务,所以总的TPS是16。

对在线的用户做并发度的分析,在很多业务中,并发度都会低于5%,甚至低于1%。
拿5%来计算,就是10000用户x5%=500(用户级TPS),注意哦,这里是TPS,而不是并发线程数。
如果这时响应时间是100ms,那显然并发线程数是500TPS/(1000ms/100ms)=50(并发线程)。
但是!响应时间肯定不会一直都是100ms的嘛。所以通常情况下,上面的这个比例都不会固定,而是随着并发线程数的增加,会出现趋势上的关系。
相关文章:
性能场景和性能需求指标
目录 一 性能场景 1、基准性能场景 2、容量性能场景 3、稳定性性能场景 4、异常性能场景 二 性能需求指标 1、业务指标 2、技术指标 2.1 时间指标 RT 2.2 容量指标 TPS 2.3 资源利用率 3、指标之间的关系 “TPS”与“响应时间” “用户数”与“TPS”与“压力工具中…...
Python学习 -- 常用函数与实例详解
在Python编程中,数据转换是一项关键任务,它允许我们在不同数据类型之间自由流动,从而提高代码的灵活性和效率。本篇博客将深入探讨常用的数据转换函数,并通过实际案例为你展示如何巧妙地在不同数据类型之间转换。 数据类型转换函…...
MySQL 账号权限
mysql 在安装好后,默认是没有远端管理账号。 一、账号管理 1. 查看账号列表 MySQL用户账号和信息存储在名为 mysql 的数据库中。一般不需要直接访问 mysql 数据库和表,但有时需要直接访问。例如,查看数据库所有用户账号列表时。 USE mysql; …...
[Mongodb 5.0]单机启动
安装完mongodb后,会自动生成下面两个目录(mongod.conf中设定的),用来存放日志和数据 /var/lib/mongo (数据目录) /var/log/mongodb (日志目录) 要启动一个单机版的mongodb,一般有两种方式: 第一种启动方式:直接使用…...
[HDLBits] Exams/m2014 q4b
Implement the following circuit: module top_module (input clk,input d, input ar, // asynchronous resetoutput q);always(posedge clk or posedge ar) beginif(ar)q<1b0;elseq<d;end endmodule...
数据结构入门:队列
目录 文章目录 前言 1.队列 1.1 队列的概念及结构 1.2 队列的实现 1.2.1 队列的定义 1.2.2队列的初始化 1.2.3 入队 1.2.4 判空 1.2.5 出队 1.2.6 队头队尾数据 1.2.7 队列长度 1.2.8 队列销毁 总结 前言 队列,作为一种重要的数据结构,在计算机科学中扮演…...
面试热题(合并K个升序链表)
给定一个链表数组,每个链表都已经按升序排列。 请将所有链表合并到一个升序链表中,返回合并后的链表。 输入:lists [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释:链表数组如下: [1->4->5,1…...
优化过多if else判断代码
有些判断难免会遇到很多 if else 看起来很头疼 下面是一个优化示例 修改前 if(this.$route.query.deptId){this.queryParams.deptId this.$route.query.deptId}else if (this.$store.state.adaptation.roleSign.includes(fengongsicengji)) {const ancestorsId this.$stor…...
最强自动化测试框架Playwright (27)-跟踪查看器
Playwright Trace Viewer 是一个 GUI 工具,可帮助您在脚本运行后探索记录的 Playwright 跟踪。可以本地打开,也可以在trace.playwright.dev.打开, 录制跟踪文件 使用context.tracing.start进行录制,使用stop方法保存录制文件 b…...
【工作中问题解决实践 十一】Kafka消费者消费堆积且频繁rebalance
最近有点不走运,老是遇到基础服务的问题,还是记着点儿解决方法,以后再遇到快速解决吧,今天遇到这个问题倒不算紧急,但也能通过这个问题熟悉一下Kafka的配置。 问题背景 正在开会的时候突然收到一连串的报警ÿ…...
ChatGpt提示词大全
中文版本 行为 提示词 Linux终端 我希望你能充当一个linux终端。我将输入命令,你会回复终端应该显示什么。我想让你只回复在一个唯一的代码块内的终端输出,而没有别的。不要写一些解释。不要键入命令,除非我指示你这样做。当我需要用英语告…...
利用SimpleDateFormat或者LocalDateTime生成格式为“yyyy-MM-dd HH:mm:ss“的当前时间
java程序: // 利用LocalDateTime生成格式为"yyyy-MM-dd HH:mm:ss"的当前时间 DateTimeFormatter formatter DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime now LocalDateTime.now(); String time1 now.format(format…...
使用 Postman 批量发送请求的最佳实践
目录 背景 批量发送? 起因 思考 Postman 批量发送接口 创建集合和接口 批量发送接口 资料获取方法 背景 最近写了几个接口: 获取 books 的接口获取 likes 的接口获取 collections 的接口 但是我还是不放心,因为这些接口到底稳不稳…...
Docker一键部署项目,无需登录XShell
文章目录 一键部署项目Docker手动部署SpringBoot项目编写docker部署的脚本文件script.sh 脚本内容 特别注意!编写dockerfiledockerfile 文件内容 上传后端服务的jar包到服务器中执行 script 脚本部署后端服务 自动部署SpringBoot项目引入jsch依赖编写jsch工具类执行…...
GIt Squash 多个提交压缩提交
假设你有一个名为 feature 的分支,它包含三个提交(A, B, C),并且你想将这三个提交压缩成一个。下面是如何做到这一点的。 首先,找出你要开始压缩的那个最早提交的哈希值。在这个例子中,我们假设 A 是最早的…...
【数据结构】栈与队列
1 栈 1.1 栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出 LIFO (Last In First Out) 的原则。 压栈:栈…...
突然让做性能测试?试试RunnerGo
当前,性能测试已经是一名软件测试工程师必须要了解,甚至熟练使用的一项技能了,在工作时可能每次发版都要跑一遍性能,跑一遍自动化。性能测试入门容易,深入则需要太多的知识量,今天这篇文章给大家带来&#…...
(7)(7.4) 集结航点
文章目录 7.4.1 概述 7.4.2 设置集结航点 7.4.3 飞行示例 7.4.4 附录 7.4.1 概述 通常情况下,当固定翼或旋翼飞机进入"返回发射"(Return to Launch (RTL))模式(通常由自动驾驶仪失控保护触发)(failsafe)时,默认行为…...
基于kubeadm部署K8S集群:上篇
目录 一、环境准备 1、主机初始化配置 2、配置主机名绑定hosts,不同主机名称不同 3、主机配置初始化 4、部署docker环境 二、部署kubernetes集群 1、组件介绍 2、所有主机配置阿里云yum源 3、安装kubelet 、kubeadm 、kubectl 4、配置init-config.yaml 5、…...
机器学习-特征选择:如何使用递归特征消除算法自动筛选出最优特征?
一、引言 在实际应用中,特征选择作为机器学习和数据挖掘领域的重要环节,对于提高模型性能和减少计算开销具有关键影响。特征选择是从原始特征集中选择最相关和最具区分力的特征子集,以提高模型的泛化能力和可解释性。 特征选择在实践中具有以…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...
springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...
水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关
在水泥厂的生产流程中,工业自动化网关起着至关重要的作用,尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关,为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多,其中不少设备采用Devicenet协议。Devicen…...
前端调试HTTP状态码
1xx(信息类状态码) 这类状态码表示临时响应,需要客户端继续处理请求。 100 Continue 服务器已收到请求的初始部分,客户端应继续发送剩余部分。 2xx(成功类状态码) 表示请求已成功被服务器接收、理解并处…...
海云安高敏捷信创白盒SCAP入选《中国网络安全细分领域产品名录》
近日,嘶吼安全产业研究院发布《中国网络安全细分领域产品名录》,海云安高敏捷信创白盒(SCAP)成功入选软件供应链安全领域产品名录。 在数字化转型加速的今天,网络安全已成为企业生存与发展的核心基石,为了解…...
TCP/IP 网络编程 | 服务端 客户端的封装
设计模式 文章目录 设计模式一、socket.h 接口(interface)二、socket.cpp 实现(implementation)三、server.cpp 使用封装(main 函数)四、client.cpp 使用封装(main 函数)五、退出方法…...
