当前位置: 首页 > news >正文

【压测指南|压力测试核心性能指标及行业标准】

文章目录

  • 压力测试核心性能指标及行业标准
    • 指标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:// |…...

应该选云服务器还是物理服务器

应该选云服务器还是物理服务器 一、为什么需要云服务器或独立服务器取代共享主机 在最早之前,大多数的网站都是共享主机开始的,这里也包含了云虚拟机。这一类的站点还有其他站点都会共同托管在同一台服务器上。但是这种共享机只适用于小的网站&#xff…...

【iOS】动态链接器dyld

参考:认识 dyld :动态链接器 dyld简介 dyld(Dynamic Linker)是 macOS 和 iOS 系统中的动态链接器,它是负责在运行时加载和链接动态共享库(dylib)或可执行文件的组件。在 macOS 系统中&#xf…...

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插件分享简书地址我的个人博客 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 字符串string的比较有很多方法&#xff0c;比如&#xff1a; …...

vue3+ts+element-plus 之使用node.js对接mysql进行表格数据展示

vue3tselement-plus axiosnode.jsmysql开发管理系统之表格展示 ✏️ 1. 新建一个node项目* 初始化node* 安装可能用到的依赖* 配置文件目录* 添加路由router1. 添加router.js文件&#xff0c;添加一个test目录2. 修改app.js ,引入router&#x1f4d2; 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的相互转换

这种方法只能解决非常简单的转换&#xff0c;更难的SMILES之间应该是无法直接转换&#xff0c;我可能很多人都使用神经网络解决 &#xff0c;暂时还没仔细看&#xff0c;后面再仔细看吧... 简单的转换&#xff1a; import urllib.error import urllib.parse import urllib.re…...

逻辑回归概述

逻辑回归介绍 1. 逻辑回归的应用场景 逻辑回归(Logistic Regression)是机器学习中的 一种分类模型 ,逻辑回归是一种分类算法,虽然名字中带有回归。由于算法的简单和高效,在实际中应用非常广泛 广告点击率是否为垃圾邮件是否患病信用卡账单是否会违约 逻辑回归就是解决二…...

React 框架下自己写一个braft编辑器,然后将编辑器内容展示在网页端

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

基于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没细致理解过的术语整理一下&#xff0c;常看常新&#xff08; 定义 (Definition)&#xff1a; 定义是指给一个实体分配内存空间&#xff0c;以便在程序中使用。在C和Python中&#xff0c;这个实体可以是变量、函数或类。在C中&#xff0c;定义通常是在声…...

k8s中强制删除pv

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

60寸透明屏的透明度怎么样?

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

Python:使用openpyxl读取Excel文件转为json数据

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

在Microsoft Excel中如何快速合并表格

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

【RS】基于规则的面向对象分类

ENVI使用最多的工具就是分类&#xff0c;这也是很多卫星影像的用途。在ENVI中有很多分类工具&#xff0c;如最基础的监督分类&#xff08;最大似然法、最小距离、支持向量机、随机森林&#xff09;、非监督分类&#xff08;K-means、IsoData&#xff09;&#xff0c;还有面向对…...

SWF格式视频怎么转换成AVI格式?简单的转换方法分享

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

Hive数据仓库

数据仓库概念与起源发展由来 数仓概念 数据仓库&#xff08;英语&#xff1a;Data Warehouse&#xff0c;简称数仓、DW&#xff09;&#xff0c;是一个用于存储、分析、报告的数据系统。数据仓库的目的是构建面相分析的集成化数据环境&#xff0c;分析结果为企业提供决策支持…...

公网访问的Linux CentOS本地Web站点搭建指南

文章目录 前言1. 本地搭建web站点2. 测试局域网访问3. 公开本地web网站3.1 安装cpolar内网穿透3.2 创建http隧道&#xff0c;指向本地80端口3.3 配置后台服务 4. 配置固定二级子域名5. 测试使用固定二级子域名访问本地web站点 前言 在web项目中,部署的web站点需要被外部访问,则…...

ChatGPT:人机交互新境界,AI智能引领未来

一、ChatGPT&#xff1a;智能交流的新标杆 ChatGPT是基于GPT技术的最新版本&#xff0c;拥有深度学习模型的基因。它通过在大量数据上进行预训练&#xff0c;可以理解和生成自然语言&#xff0c;从而实现了与人类更加自然流畅的对话和交流。 二、ChatGPT的技术背景和工作原理 …...

微信小程序值相同的数据,一个数据setDate修改后,另一个值相同的数据也会修改

在js中一个基础类型可以直接赋值&#xff0c;引用类型直接赋值会指向同一个值&#xff08;原理是浅拷贝和深拷贝&#xff09; 解决问题代码&#xff1a;JSON.parse(JSON.stringify(json)) ↓ let json {0: [false, false],1: [true, false] } this.setData({timeList: JSON.…...

Spring5学习笔记 — IOC

✅作者简介&#xff1a;大家好&#xff0c;我是Cisyam&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Cisyam-Shark的博客 &#x1f49e;当前专栏&#xff1a; Spring专栏 ✨特色专栏&a…...

DevOps自动化平台开发之 Shell脚本执行的封装

基础知识 基于如下技术栈开发DevOps平台 Spring Boot Shell Ansible Git Gitlab Docker K8S Vue 1、spring boot starter的封装使用 2、Shell脚本的编写 3、Ansible 脚本的编写 4、Docker 的使用与封装设计 本篇介绍如何使用Java封装Linux命令和Shell脚本的使用 将其设计成…...

STM32CubeIDE(I2C)

目录 一、IIC轮询模式 1.1 配置 1.2 编写AHT20驱动 1.2.1 aht20.h 1.2.2 aht20.c 二、I2C中断 2.1 打开中断 2.2 分离读取流程 2.3 在主函数中重新编写读取流程 2.4 在i2c.c中重新定义stm32f1xx_hal_i2c.h中的两个函数 三、I2CDMA 3.1 配置DMA通道 3.2 代码的修改 一…...

http 请求报文响应报文的格式以及Token cookie session 区别

面试必备 http 请求报文响应报文的格式Token cookie session 区别 http 请求报文响应报文的格式 HTTP 请求报文和响应报文的格式如下&#xff1a; HTTP 请求报文格式&#xff1a; <方法> <路径> <协议版本> <请求头部字段1>: <值1> <请求头…...

智能汽车的主动悬架工作原理详述

摘要&#xff1a; 本文将详细介绍主动悬架功能原理设计。 主动悬架是车辆上的一种汽车悬架。它使用车载系统来控制车轮相对于底盘或车身的垂直运动&#xff0c;而不是由大弹簧提供的被动悬架&#xff0c;后者的运动完全由路面决定。主动悬架分为两类&#xff1a;真正的主动悬架…...

vue2和vue3的一些技术点复习

二、vue2 1、vue2对已有组件二次封装&#xff0c;例如fes2 input 组件&#xff08;文档链接&#xff09; 子组件 <template><div class"keyboard-page"><wb-input:id"keyBoardId":placeholder"placeholder" :type"type&q…...