性能测试相关理解(一)

news2024/9/22 7:09:44

根据学习全栈测试博主的课程做的笔记

一、说明

若未特别说明,涉及术语都是jmeter来说,线程数,就是jmeter线程组中的线程数

在这里插入图片描述

二、软件性能是什么

1、用户关注:响应时间

2、业务/产品关注:响应时间、支持多少并发数、对业务的处理能力

3、运维关注:响应时间(是否有超时的请求)、资源利用率、稳定性等

4、dba关注:响应时间(慢sql或者死锁),关注数据库的资源利用情况(表空间的资源使用情况)

5、开发关注:响应时间(代码逻辑的处理快慢,特别是锁,锁的力度不合理导致后来的请求响应时间长)

6、架构师关注:架构是否涉及合理(是否具备扩展能力)

7、测试关注(关注6类用户关注的):响应时间、处理能力(TPS)、稳定性、什么时候进行扩展等

三、几个性能测试相关得概念

1、 负载测试:不同客户端线程数下服务器处理的能力

客户端线程数下即就是jmeter下的线程数
模拟客户端向服务器发送压力

2、容量测试:强调的是容量测试、业务(混合容量tps),当前支持的最大容量、对未来容量的规划

数据库容量即就是数据库的数据量

3、递增测试:强调的是递增,连续递增加压,看服务器的处理能力

4、 强度测试:用大量的客户端,并发线程看服务端表现情况

5、性能测试:在某个特点的硬件、软件、网络设计场景模拟并发请求,通过监控分析进行调优,达到性能测试目标

6、总结

前面的四种强调的是不同的性能测试方式,性能测试场景的设计。可以将四种测试设计在里面。负载测试(场景就是阶梯加压,每个阶梯对应的就是客户端的线程数,对应的负载,再测一个最大值。
递增测试:连续阶梯加压。
强调测试:连续阶梯加压,测试最大值。

四、性能测试中的关键术语

1、 并发、线程、tps

1.1公司要求500并发、500并发表示什么?

1.2并发分类、以及线程、tps的关系

1.2.1绝对并发–狭义:表示服务端某一个时刻物理的请求数。处理的请求数和什么有关系?

如某一个服务器是16c,64g,某一个时刻处理多少请求和逻辑cpu有关系,实际测试时服务端做并发。

1.2.2相对并发-广义/tps

某一个时间段内处理的请求数,相对并发才是真正服务器的处理能力。不是站在服务器逻辑cpu的角度。
平时的并发就是相对并发,就是tps。

tps就是每秒钟处理多少个请求,1s是时间段。
为什么并发是tps?
解释:并发=tps,需要站在客户端和服务端的视角下。
上面两个并发仅站在服务端的角度,tps是要站在客户端和服务端的视角下。把并发分为客户端并发和服务端并发。

很多都是认为客户端jmeter处的线程数就是并发数.,其实没啥问题,但是需要认定为客户端并发,而并不是服务端并发。还把并发分为客户端并发和服务端并发。

1.2.3客户端并发

此处的jmeter中的线程数是模拟大量请求对服务端产生压力,此时的数值在性能测试中是没有参考意义的。

此处并不能说明值设计的越大,性能就越好。而是需要看服务器的处理情况(服务器的tps、成功率、响应时间)
一般说的并发说的是服务端的并发。

并发不等于线程数,为什么?
举例:若每秒的线程数为10,每个线程数1s内可以完成10个事务,循环发10次请求。此处完成的请求是100个,看性能需要看服务端而不是客户端,服务端相当于是10个线程,完成了10个事务,循环发了10个事务的请求,服务端都进行了处理。即并发–100,则tps是100。

线程是否是用户 10个线程不等于10个用户(虚拟用户)
领导要求500并发,并不是说jmeter客户线程数设置就是500.jmeter的线程数是可以随意设置的最好的就是连续加压,可以看到每个阶梯的tps使用情况再看监控。

每个线程1s,阶梯加压到50个线程时tps就是500。
前提:tps服务器处理请求随着jmeter线程数增加而线性增加。

压测不仅要压目标tps,还需要压测出最大的tps.
50个线程已经达到500目标tps。假设在200个线程时,线程增加时,最大的目标tps则为2000,继续加压时,tps则下降,这时已经超过服务器的最大处理能力,请求都在排队,响应时间增长。

所以如果一个系统的响应比较快,1个线程1s时间内可以完成10个事务,需要设置的线程数是小于客户端jmeter的线程数。

并发:客户端的并发只是为了模拟用户给服务端加压力,他是没有参考意义的,是需要服务端的并发,服务端的并发是tps

线程是否=用户?(虚拟用户)

线程不等于用户(为什么?
因为线程做了用户的动作,线程的每一次迭代才称为用户)即jmeter处的循环次数,发一次请求服务端给一次响应,这个是迭代。

注册场景:
1s内,1个线程可以发10次请求,注册时用户名需要不一样,此时假设已经参数化并且参数是足够多,1个线程1s可以发10次请求就相当于10个用户进行注册,10个线程就是发100个请求,即就是100个用户进行注册,100个用户用户名不同。并发用户数此时是100,tps100,压力线程数是10.

可以这么理解:
线程只是执行用户的操作,线程的每一次迭代是模拟了用户的操作。

事务(关注流程,整个流程就为请求,若不关注流程,一个请求就是一个事务就是)

在这里插入图片描述

1.2.4服务端并发(站在业务层面,站在服务器的处理能力进行谈并发)

客户端并发只是为了向服务端发送压力,并没有什么参考意义。

服务端并发的:前提是需要保证事务的成功率,具体是多少,看行业要求,涉及到金钱事务的成功率是100%,涉及到其他一般是项目组定(如99.9%)

在这里插入图片描述

1.2.5线程和tps的瞬时计算

线程和tps的瞬时计算,并不是整个的计算

此处表面3个线程,1s可以完成5次请求,3个线程即就是3*5=15,

tps=15=总请求数/并发时间=15/1s=35=3(1000ms/200ms)
总请求数/并发时间=线程数*(1000/rt每个请求的响应时间)
rt是瞬时值

2、QPS和TPS的区别

QPS(Query Per Second):每秒钟的查询
TPS(Transaction per Second)):每秒钟的处理事务数

3、响应时间rt:判断业务快慢的指标

正常的性能压测响应时间都是从低到高
刚开始压力小时,服务器都能进行处理,响应也比较快。随着压力越来越大,处理不过来,请求排队。

3.1rt增加、表示开始出现性能瓶颈

3.2补充瓶颈分析

此处简单介绍,后面详细解释

3.2.1简单架构

对于简单架构,一般是通过服务器的资源情况进行判断是否出现瓶颈。

3.2.2复杂架构(微服务)

对于复杂架构
就需要进行去分解响应时间看什么地方耗时多。

对时间的分解的方式:日志打点计时器,通过日志去查看请求的时间,
对于微服务最后是:链路监控工具(skywalking)

在这里插入图片描述

4、 线程、tps、rt三者的关系

4.1线程、tps、rt三者关系图

jmeter线程数增加,发送的请求增加,刚开始都能处理,随着增加线程逐渐增加,服务器的资源利用率就会增加(cpu、mem),此图,tps随着线程数的增加是线性增加,到了一定阶段后,服务器出现了瓶颈后,响应时间开始增加,tps达到最大值后,tps增幅趋于平稳或者下降

在这里插入图片描述

4.2连续阶梯加压场景设计图(这个是用插件实现的)

图上斜的就是启动线程,启动多少线程
启动后又可以平稳的运行一段时间

在这里插入图片描述

五、性能指标

怎么衡量系统的性能?以下指标

1、tps、rt、成功率

tps是用来衡量服务器的处理能力,而在jmeter中就是压测那段时间内,总的请求数/压测的时间=tps

rt:jmeter中有平均响应时间、90%、95%、99%的响应时间

成功率也有进行统计。

2、也可以加上技术指标:sql耗时不能超过200ms,fgc在多少时间范围内不能超过多少次,服务器资源使用情况

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1901766.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

创新配置,秒级采集,火爆短视频评论抓取

快速采集评论数据的好处 快速采集评论数据是在当今数字信息时代的市场趋势分析和用户反馈分析中至关重要的环节。通过准确获取并分析大量用户评论,您将能够更好地了解消费者的需求、情感和偏好。集蜂云采集平台提供了一种简单配置的方法,使您能够快速采…

NDVI数据集提取植被覆盖度FVC

植被覆盖度FVC 植被覆盖度(Foliage Vegetation Cover,FVC)是指植被冠层覆盖地表的面积比例,通常用来描述一个区域内植被的茂密程度或生长状况。它是生态学、环境科学以及地理信息系统等领域的重要指标,对于理解地表能…

A股继续3000以下震荡,而国外股市屡创新高,人民币反弹能带动A股吗?

今天的A股,让人愤愤不已,你知道是为什么吗?盘面上出现3个耐人寻味的重要信号,一起来看看: 1、今天两市一度回踩2920点,让股民的心都开始悬起来了。而午后市场行情有了转变,下跌的股票开始明显变…

Java -- 实现MD5加密/加盐

目录 1. 加密的引出2. MD5介绍3. 解决MD5不可解密方法4. 实现加密解密4.1 加密4.2 验证密码 1. 加密的引出 在MySQL数据库中,一般都需要把密码、身份证、电话号码等信息进行加密,以确保数据的安全性。如果使用明文来存储,当数据库被入侵的时…

自动化设备上位机设计 三

目录 一 设计原型 二 后台源码 一 设计原型 二 后台源码 using SqlSugar;namespace 自动化上位机设计 {public partial class Form1 : Form{SqlHelper sqlHelper new SqlHelper();SqlSugarClient dbContent null;bool IsRun false;int Count 0;public Form1(){Initializ…

C++初学者指南-4.诊断---基础:警告和测试

C初学者指南-4.诊断—基础知识:警告和测试 文章目录 C初学者指南-4.诊断---基础知识:警告和测试1. 术语和技术记住:使用专用类型! 2.编译器警告Gcc/CLang 编译器选项MS Visual Studio 编译器选项 3.断言运行时断言静态断言&#x…

Spring容器Bean之XML配置方式

一、首先看applicationContext.xml里的配置项bean 我们采用xml配置文件的方式对bean进行声明和管理,每一个bean标签都代表着需要被创建的对象并通过property标签可以为该类注入其他依赖对象,通过这种方式Spring容器就可以成功知道我们需要创建那些bean实…

Docker-基础

一,Docker简介,功能特性与应用场景 1.1 Docker简介 Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器…

2024年AI技术深入研究

2024年AI技术持续快速发展,应用领域广泛,产业发展迅速,市场趋势积极,学术研究深入。 AI技术进展大模型发展 2024年,智谱AI正在研发对标OpenAI Sora的高质量文生视频模型,预计最快年内发布。智谱AI的进展显示了国内AI大模型领域的快速发展,以及与国际领先技术的竞争态势…

PageCache页缓存

一.PageCache基本结构 1.PageCache任务 PageCache负责使用系统调用向系统申请页的内存,给CentralCache分配大块儿的内存,以及合并前后页空闲的内存,整体也是一个单例,需要加锁. PageCache桶的下标按照页号进行映射,每个桶里span的页数即为下标大小. 2.基本结构 当每个线程的…

【话题】AI是在帮助开发者还是取代他们

大家好,我是全栈小5,欢迎阅读小5的系列文章,这是《话题》系列文章 目录 引言AI在代码生成中的应用AI在错误检测和自动化测试中的作用对开发者职业前景的影响技能需求的变化与适应策略结论文章推荐 引言 随着人工智能(AI&#xff…

Python 获取tiktok视频评论回复数据 api接口

TIKTOK api接口 用于爬取tiktok视频评论回复数据 详细采集页面如图 https://www.tiktok.com/dailymail/video/7329872821990182190?qneural%20link&t1706783508149 请求API http://api.xxxx.com/tt/video/info/comment/reply?video_id7288909913185701125&comment_…

YOLOv8改进 | 注意力机制 | 结合静态和动态上下文信息的注意力机制

秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录 :《YOLOv8改进有效…

【Springer出版 | EI稳定检索】第五届物联网、人工智能与机械自动化国际学术会议 (IoTAIMA 2024,7月19-21)

由浙江工业大学主办,第五届物联网、人工智能与机械自动化国际学术会议 (IoTAIMA 2024) 将于2024年7月19-21日在浙江杭州召开。 会议旨在为从事物联网、人工智能与机械自动化的专家学者、工程技术人员、技术研发人员提供一个共享科研成果和前沿技术,了解学…

ubuntu22 sshd设置

专栏总目录 一、安装sshd服务 sudo apt updatesudo apt install -y openssh-server 二、配置sshd 使用文本编辑器打开/etc/ssh/sshd_config sudo vi /etc/ssh/sshd_config (一)配置sshd服务的侦听端口 建议将ssh的侦听端口改为7000以上的端口&#…

大数的排列组合公式C代码

我们知道,计算排列A(n,m)和组合C(n,m)可以用先求阶乘的方式实现,但是当数很大时求阶乘很容易溢出,所以这里给出非阶乘的方式求排列组合 求排列 分母和分子可以抵消,最后代码如下 unsigned long long A(int n, int m) {unsigned…

Buuctf之SimpleRev做法

首先,查个壳,64bit,那就丢进ida64中进行反编译进来之后,我们进入main函数,发现里面没什么东西,那就shiftf12搜索字符串,找到关键字符串,双击进入然后再选中该字符串,ctrl…

Android仿天眼查人物关系图

效果图预览 绘制思路 这里使用了中学解析几何知识 XPoint OPointX OPointXcosθ; YPoint OPointY OPointYsinθ; canvas.drawText(lists.get(i).getName(), XPoint (float) Math.cos(pere * i 5) * radius[i % radius.length] - 30, YPoint (fl…

TaskDisplayArea、ActivityStack、Task以及ActivityRecord之间的关系

目录 一、TaskDisplayArea、ActivityStack、TaskRecord以及ActivityRecord关系图 二、TaskDisplayArea、ActivityStack、Task以及ActivityRecord相关代码 1、ActivityRecord 2、Task 3、ActivityStack 4、TaskDisplayArea 前言:对TaskDisplayArea、ActivitySt…

【图解大数据技术】Flume、Kafka、Sqoop

【图解大数据技术】Flume、Kafka、Sqoop FlumeFlume简介Flume的应用场景 KafkaKafka简介Kafka架构Flume与Kafka集成 SqoopSqoop简介Sqoop原理sqoop搭配任务调度器实现定时数据同步 Flume Flume简介 Flume是一个数据采集工具,多用于大数据技术架构下的日志采集。 …