【压测指南|压力测试核心性能指标及行业标准】
文章目录
- 压力测试核心性能指标及行业标准
- 指标1:响应时间
- 指标2:吞吐量(TPS)
- 指标3:失败率
- 总结:
压力测试核心性能指标及行业标准
在做压力测试时,新手测试人员常常在看报告时倍感压力:这么多性能测试指标分别是什么意思,应该达到什么标准?
本文将结合实际压测报告,帮助您快速理解压测时的主要性能指标,了解如何解读该指标以及通常情况下应该达到的标准。
指标1:响应时间
性能测试过程是模拟用户真实视角的请求过程。一个请求的“响应时间”指的是从开始跟被测服务建立连接、发送请求内容、再等待服务响应、最后完整接收回包的整个时间长度。
这里需要注意的是,通常研发人员考量的接口响应时间,是从服务接收到请求后到发出请求的时间长度,这其实是性能测试报告内“响应时间”的“子集”。
平均响应时间作为报告的重要的指标之一,计算方法是计算整个压测过程中全部请求的响应时间平均值。
除了平均响应时间,压测人员通常还会关注最小、最大、90%、95%、99%响应时间。计算方式是将所有请求的响应时间按从小到大排序,其中最小、90%、95%、99%和最大分位的数据,即上述指标的值。例如,95%响应时间,意味着整个压测过程中95%的请求的响应时间都小于该值。
响应时间应该如何分析,在实际业务中应该达到什么样的标准呢?
图片为腾讯某真实线上运营活动接口的压测报告截图,在模拟5000用户并发压测5分钟期间,平均响应时间为48毫秒,失败率低于1%(该项指标符合该业务预期)。
压测人员需要就趋势图中偶发超长响应时间进行分析,联动开发人员根据traceID跟踪分析具体原因即可。
响应时间与客户体验息息相关,有说法称,当页面的加载速度大于1秒时,搜索引擎SEO会对网站进行降权处理。
虽然响应时间并没有严格的通用标准,但这里我们给一些行业通用的标准给大家做一个参考。
-
对于大部分互联网行业业务来说,接口的平均响应时间普遍优于其他行业,核心接口响应时间通常小于200毫秒,普通接口小于500毫秒,部分特殊接口也以小于1秒为佳。当超出相应标准时,需研发人员对服务进行扩容或性能优化。
-
对于非互联网行业来说,响应时间标准要放宽一些,但通常建议核心接口响应时间小于500毫秒,普通接口小于1秒,特殊接口也不要超过3秒为佳,否则将较大程度影响用户使用体验。
指标2:吞吐量(TPS)
吞吐量度量了单位时间内被测服务可以处理多少请求,所以是服务性能的重要指标。压测过程中吞吐量通常使用TPS进行度量。
什么是TPS呢?TPS的全称是Transaction Per Second,也就是被测服务每秒处理的事务数TPS的计算方式,是用压测时间段内的总事务数除以压测总时长秒数,即可得到每秒处理事务数。
在压测过程中,优测压测平台会每秒计算一次当前这一秒的TPS,压测过程结束后,其中最小和最大的即最小和最大TPS,求均值即可得出平均TPS。
这里需要注意的是,**TPS的指标必须结合压测时配置的并发线程数,即模拟用户数一起分析。在被测服务未达瓶颈的时候,线程数越大,TPS越大。**举一个例子,平均响应时间是200毫秒的某业务,假如仅模拟1用户数发压,那么TPS等于5,显然并不代表服务的极限吞吐量水平。
通常情况下,我们会通过不断增加线程数,在错误率符合预期的前提下,探索TPS的上限,作为当前部署配置下的服务吞吐量指标。
那么报告内的TPS趋势图该如何分析?该达到什么样的标准呢?
图片为某业务接口的压测报告截图,模式为梯度增压模式,也被称为“摸高”模式,即通过逐步增加并发量,探索被测服务吞吐量瓶颈。如图所示,在并发数第一次上升的过程中,TPS吞吐量大幅提升,但在后续“爬坡”过程中,吞吐量基本保持平稳,这说明被测接口的吞吐量已达到瓶颈。
TPS通常根据业务需求来进行设定,如分析该业务历史真实线上业务数据的峰值,乘以一定的buffer作为此次压测目标。或者对于暂未上线的活动或者功能,根据产品或运营人员预估的峰值请求数乘以一定的buffer作为此次压测目标。Buffer值通常为1.5-3倍,视风险情况而定。
这里我们也给出一些常见业务类型的TPS情况,仅供参考。电商或大规模的运营活动,如秒杀等场景,因为瞬间高峰值请求情况,TPS通常能达到百万级别。普通的互联网业务,通常吞吐量根据业务重要程度不同,在1万至10万之间。对于非互联网行业产品或小规模系统,因为用户量不大,TPS通常在5万以下。
指标3:失败率
失败率是性能测试过程中最好理解也是最重要的指标。
失败率的计算方法,是用总失败请求数除以总请求数。通常标准为比较严格的要求100%成功,或者相对可接受的失败率低于1%,也就是100次请求业务中,有一个用户会遭遇失败。
需要注意的是,很多压测人员会简单的使用http响应码作为判断标准,200即成功,其他即失败。在实际经验中,经常会出现响应码是200,但响应结果不符合预期的情况。所以需要压测人员根据业务逻辑,配置详细错误断言和描述,精准评估失败率。
总结:
不管是哪个指标,其实最重要的不是对指标本身是否达标的度量,而是通过指标评估被测系统是否达到预期,以及对具体问题的分析和定位。需尽可能通过查看日志、链路追踪等方法,定位问题根源并解决。
如下图实例,根据错误请求的具体请求和响应信息,分析具体原因。并通过链路追踪,精准定位问题。
优测压力测试平台简介:
优测压力测试是一款在线云原生全链路压测平台,百万级并发即召即用。兼容JMeter脚本,一键上传即可随时发压,免去压测工具搭建成本。除在线压测工具外,也支持私有化部署、定制化开发及专家压测服务。欢迎大家登录优测官网免费体验!点击原文了解压测产品详情。
相关文章:

【压测指南|压力测试核心性能指标及行业标准】
文章目录 压力测试核心性能指标及行业标准指标1:响应时间指标2:吞吐量(TPS)指标3:失败率总结: 压力测试核心性能指标及行业标准 在做压力测试时,新手测试人员常常在看报告时倍感压力:这么多性能…...
spark-submit --files
一、原理 spark-submit --files通常用来加载外部资源文件,在driver和executor进程中进行访问 –files和–jars基本相同 二、使用步骤 2.1 添加文件 spark-submit --files file_paths 其中file_paths可为多种方式:file: | hdfs:// | http:// | ftp:// |…...
应该选云服务器还是物理服务器
应该选云服务器还是物理服务器 一、为什么需要云服务器或独立服务器取代共享主机 在最早之前,大多数的网站都是共享主机开始的,这里也包含了云虚拟机。这一类的站点还有其他站点都会共同托管在同一台服务器上。但是这种共享机只适用于小的网站ÿ…...

【iOS】动态链接器dyld
参考:认识 dyld :动态链接器 dyld简介 dyld(Dynamic Linker)是 macOS 和 iOS 系统中的动态链接器,它是负责在运行时加载和链接动态共享库(dylib)或可执行文件的组件。在 macOS 系统中…...
RocketMQ集成Springboot --Chapter1
RocketMQ集成Springboot 三种消息发送方式 生产者 引入依赖 <!--⽗⼯程--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.2.RELEASE</version><…...

【Unity3D日常开发】Unity3D中比较string字符串的常用方法
推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 字符串string的比较有很多方法,比如: …...

vue3+ts+element-plus 之使用node.js对接mysql进行表格数据展示
vue3tselement-plus axiosnode.jsmysql开发管理系统之表格展示 ✏️ 1. 新建一个node项目* 初始化node* 安装可能用到的依赖* 配置文件目录* 添加路由router1. 添加router.js文件,添加一个test目录2. 修改app.js ,引入router📒 3. 启动并在浏览器打开 * …...

华为eNSP:isis配置跨区域路由
一、拓扑图 二、路由器的配置 1、配置接口IP AR1: <Huawei>system-view [Huawei]int g0/0/0 [Huawei-GigabitEthernet0/0/0]ip add 1.1.1.1 24 [Huawei-GigabitEthernet0/0/0]q AR2: [Huawei]int g0/0/0 [Huawei-GigabitEthernet0/0/0]ip add 1.1.1.2 24 [Huawe…...
IUPAC和SMILES的相互转换
这种方法只能解决非常简单的转换,更难的SMILES之间应该是无法直接转换,我可能很多人都使用神经网络解决 ,暂时还没仔细看,后面再仔细看吧... 简单的转换: import urllib.error import urllib.parse import urllib.re…...
逻辑回归概述
逻辑回归介绍 1. 逻辑回归的应用场景 逻辑回归(Logistic Regression)是机器学习中的 一种分类模型 ,逻辑回归是一种分类算法,虽然名字中带有回归。由于算法的简单和高效,在实际中应用非常广泛 广告点击率是否为垃圾邮件是否患病信用卡账单是否会违约 逻辑回归就是解决二…...

React 框架下自己写一个braft编辑器,然后将编辑器内容展示在网页端
1.首先自己写一个编辑器 输入文字; 支持选择表情; 可添加小程序链接;可添加网页链接;并且可以编辑删除;效果如下 2.输入完毕后,点击文本输入框保存,将便携式内容回显, 渲染时…...

基于DNN深度学习网络的OFDM+QPSK信号检测算法matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ............................................................................. Transmitt…...
学生管理系统-05封装选项卡
一、选项卡的添加 1、在router/index.js修改之前的动态添加二级路由的代码 router.addRoute("homeName",{ path:routeObj.path, component:()=>import(`@/views${routeObj.permission}.vue`), meta:{ name:routeObj.title …...
关于一些C++、Qt、Python方面的术语
杂鱼之前纯粹用python没细致理解过的术语整理一下,常看常新( 定义 (Definition): 定义是指给一个实体分配内存空间,以便在程序中使用。在C和Python中,这个实体可以是变量、函数或类。在C中,定义通常是在声…...

k8s中强制删除pv
K8s 集群内有一个已经不再使用的 PV,虽然已经删除了与其关联的 Pod 及 PVC,并对其执行了删除命令,但仍无法正常删除,一直处于 Terminating 状态: 解决办法: 1. 获取pv信息 kubectl get pv 2. 解除pv锁定 …...

60寸透明屏的透明度怎么样?
60寸透明屏是一种新型的显示屏技术,它具有透明度高、色彩鲜艳、清晰度高等特点,可以广泛应用于商业展示、户外广告、智能家居等领域。 首先,60寸透明屏的透明度高。 透明屏采用了特殊的材料和技术,使得屏幕在显示内容的同时&…...

Python:使用openpyxl读取Excel文件转为json数据
文档 https://openpyxl.readthedocs.io/en/stable/https://pypi.org/project/openpyxl/ 安装 pip install openpyxl环境 $ python --version Python 3.7.0读取文件示例:将Excel文件读取为json数据 有如下一个文件 data.xlsx 实现代码 # -*- coding: utf-8 -…...

在Microsoft Excel中如何快速合并表格
在 Excel 中分析数据时,在一个工作表中收集所有必要信息的频率是多少?几乎从来没有!当不同的数据分散在许多工作表和工作簿中时,这是一种非常常见的情况。幸运的是,有几种不同的方法可以将多个表中的数据组合成一个表&…...

【RS】基于规则的面向对象分类
ENVI使用最多的工具就是分类,这也是很多卫星影像的用途。在ENVI中有很多分类工具,如最基础的监督分类(最大似然法、最小距离、支持向量机、随机森林)、非监督分类(K-means、IsoData),还有面向对…...

SWF格式视频怎么转换成AVI格式?简单的转换方法分享
当你想要在不同的设备上播放视频时,将SWF格式视频转换成AVI格式是非常有用的。因为SWF格式通常只能在特定的软件或网页上播放,而AVI格式则可以在更广泛的设备上播放,包括智能手机,平板电脑和电视机等。那么我们怎么将SWF转换成AVI…...

ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...

Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...

2.3 物理层设备
在这个视频中,我们要学习工作在物理层的两种网络设备,分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间,需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质,假设A节点要给…...

GraphRAG优化新思路-开源的ROGRAG框架
目前的如微软开源的GraphRAG的工作流程都较为复杂,难以孤立地评估各个组件的贡献,传统的检索方法在处理复杂推理任务时可能不够有效,特别是在需要理解实体间关系或多跳知识的情况下。先说结论,看完后感觉这个框架性能上不会比Grap…...
2.2.2 ASPICE的需求分析
ASPICE的需求分析是汽车软件开发过程中至关重要的一环,它涉及到对需求进行详细分析、验证和确认,以确保软件产品能够满足客户和用户的需求。在ASPICE中,需求分析的关键步骤包括: 需求细化:将从需求收集阶段获得的高层需…...
CppCon 2015 学习:REFLECTION TECHNIQUES IN C++
关于 Reflection(反射) 这个概念,总结一下: Reflection(反射)是什么? 反射是对类型的自我检查能力(Introspection) 可以查看类的成员变量、成员函数等信息。反射允许枚…...

C#中用于控制自定义特性(Attribute)
我们来详细解释一下 [AttributeUsage(AttributeTargets.Class, AllowMultiple false, Inherited false)] 这个 C# 属性。 在 C# 中,Attribute(特性)是一种用于向程序元素(如类、方法、属性等)添加元数据的机制。Attr…...