Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >压力测试tps是啥意思_高并发压力测试

压力测试tps是啥意思_高并发压力测试

作者头像
全栈程序员站长
发布于 2022-08-02 06:03:55
发布于 2022-08-02 06:03:55
5.3K0
举报

大家好,又见面了,我是你们的朋友全栈君。

最近在对代码进行压力测试,这里整理一下压测中的指标和方法。

文章目录

1 压力测试中的指标

1.1 TPS

TPS 即Transactions Per Second的缩写,每秒处理的事务数目。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程**(完整处理,即客户端发起请求到得到响应)**。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数,最终利用这些信息作出的评估分。一个事务可能对应多个请求,可以参考下数据库的事务操作。

1.2 QPS

QPS 即Queries Per Second的缩写,每秒能处理查询数目(完整处理,即客户端发起请求到得到响应)。是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。 我们从它的英文全名可以得出它是查询意思,原来在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。对应fetches/sec,即每秒的响应请求数。 虽然名义上是查询的意思,但实际上,现在习惯于对单一接口服务的处理能力用QPS进行表述(即使它并不是查询操作)。

1.3 平均处理时间(RT)

RT:响应时间,处理一次请求所需要的平均处理时间。 我们一般还会关注90%请求的的平均处理时间,因为可能因网络情况出现极端情况。

1.4 并发用户数(并发量)

每秒对待测试接口发起请求的用户数量。

1.5 换算关系

QPS = 并发数/平均响应时间 并发量 = QPS * 平均响应时间

比如3000个用户(并发量)同时访问待测试接口,在用户端统计,3000个用户平均得到响应的时间为1188.538ms。所以QPS=3000/1.188538s= 2524.11 q/s。 我们就可以这样描述本次测试,在3000个并发量的情况下,QPS为2524.11,平均响应事件为1188.538ms

1.5 TPS和QPS的区别

这个问题开始,我认为这两者应该是同一个东西,但在知乎上看到他们的英文名,现在我认为: QPS 每秒能处理查询数目,但现在一般也用于单服务接口每秒能处理请求数。 TPS 每秒处理的事务数目,如果完成该事务仅为单个服务接口,我们也可以认为它就是QPS。

PS:还有一个RPS的的概念 request per second 。每秒请求数,在一定条件下和QPS 和TPS类似。

2 压力测试方法

我们可以使用压测工具模拟多用户对系统进行压力测试。后面会有压测工具的介绍

而测试的方式是,以一定请求总量,保持不变,逐步增加并发量,观察QPS的变化及平均响应时间的变化。 比如10000的总请求数,然后测试100的并发量情况下的QPS值,然后200, 300, 400, 500等。

一个系统吞吐量通常由TPS、并发数两个因素决定,每套系统这两个值都有一个相对极限值,在应用场景访问压力下,只要某一项达 到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,上下文切换、内存等等其它消耗导致系统性能下降。这里给出一份使用ab工具的压测图。

从图中可以看出2000的并发量时,QPS已经达到2500左右,后续加大并发数仍维持在2500,说明该接口在该配置下,QPS为2500,即每秒该系统的能力只能处理2500个请求左右,后面加大的并发量,只会导致平均响应时间的增加。(PS:因为每秒只能处理2500个请求,而一次性有7000的并发,自然会造成请求堆积,导致平均响应时间会变长)我们看到超过14000之后连QPS也开始急剧下降,说明系统超负荷工作,导致性能开始急剧下降。而一般情况下,我们认为平均响应时间达到一定值,就已经不可以接受了。

3 相关文档

估计物联网设备并发量整理的blog: https://blog.csdn.net/m0_37263637/article/details/88649056 压力测试工具ab工具: https://blog.csdn.net/m0_37263637/article/details/78558890 Node express框架压测结果: https://blog.csdn.net/m0_37263637/article/details/88749198

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/125192.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Mockito模拟进行单元测试
    MOCK意思是模拟的意思,主要被用来进行数据的人工组织,不会真正地调用第三方服务器,类似redis,mysql等都不会调用,也不用关心数据底层是如何进行处理的,我们要做的只是将本单元的逻辑进行单元测试,验证数据的逻辑处理性,而其中mock较好的框架就是Mockito。
chinotan
2019/07/15
9.8K0
Mockito模拟进行单元测试
博文精选|Mockito使用指南
https://blog.csdn.net/shensky711/article/details/52771493(点击阅读原文前往)
java达人
2018/12/24
4.5K0
单元测试框架spock和Mockito应用
spock是一款基于Groovy语言的单元测试框架,其基础也是Java的Junit,目前最新版已经到了2.0,但对Groovy和响应的Java版本要求较高,具体信息参考:Spock 2.0 M1版本初探。
FunTester
2020/05/18
2.5K0
Difference between @Mock, @InjectMocks and @Captor
我们的第一个选择是使用MockitoJUnitRunner注释 JUnit 测试:
查拉图斯特拉说
2023/12/19
2740
Java单元测试Mock框架Mockito入门介绍
Mockito是Java的单元测试Mock框架。它的logo是一杯古巴最著名的鸡尾酒Mojito,Mojito鸡尾酒,源自古巴的哈瓦那,带有浓厚的加勒比海风情。并不浓烈,但是喝一杯下去,脸上会泛起红晕,象少女的羞涩。味道很清新,有一点青涩、有点甜蜜。
dongfanger
2021/07/21
5.2K0
用过举手!SpringBoot 单元测试利器-Mockito
Mockito 是一种 Java mock 框架,他主要是用来做 mock 测试的,他可以模拟任何 Spring 管理的 bean、模拟方法的返回值、模拟抛出异常...等,在了解 Mockito 的具体用法之前,得先了解什麽是 mock 测试
JAVA葵花宝典
2020/03/11
5K0
Difference between @Mock, @InjectMocks and @Captor
我们的第一个选择是使用MockitoJUnitRunner注释 JUnit 测试:
查拉图斯特拉说
2023/11/09
5951
Difference between @Mock, @InjectMocks and @Captor
单元测试指南
在我们公司中要做单元测试,确实比较难,因为公司缺少这种氛围,有也只是局部的,大多数工程师没有这方面的习惯和素养,很多人都是有一定的抵触的心理,经过我私下的了解大概有以下几种原因吧。
Abalone
2022/07/14
6.4K0
单元测试指南
使用 Junit + Mockito 实践单元测试
相信做过开发的同学,都多多少少写过下面的代码,很长一段时间我一直以为这就是单元测试...
JMCui
2020/05/06
5K0
SpringBoot - 单元测试利器Mockito入门
Mock 测试就是在测试过程中,创建一个假的对象,避免你为了测试一个方法,却要自行构建整个 Bean 的依赖链。
小小工匠
2021/08/17
17.7K1
SpringBoot - 单元测试利器Mockito入门
一起学Mockito(一)
项目太大,工程太多。不知道何时起,我们就没了开发环境。代码都是在预发环境上验证没问题之后发到正式环境。总之一句话,本地代码是跑不起来的,想要徒手抓bug,你就要拥有一定水平。假设跟作者一般菜,那就只能无限打印log日志了,主要是打了日志可别忘了删。否则bug没抓到,还被别人看到那乱七八糟的代码怕是又要应届生同学一顿diss了。其实搭建一套开发环境理论是可行的,但是谁也撬不动好几个部门,即便撬动了,弄出来怕是得个一两年,所以就只能用单测自我安慰了。
写一点笔记
2022/08/11
5700
使用强大的 Mockito 来测试你的代码
这篇教程介绍了如何使用 Mockito 框架来给软件写测试用例。 1、预备知识 如果需要往下学习,你需要先理解 Junit 框架中的单元测试。 如果你不熟悉 JUnit,请查看下面的教程: http://www.vogella.com/tutorials/JUnit/article.html 2、使用mock对象来进行测试 2.1 单元测试的目标和挑战 单元测试的思路是在不涉及依赖关系的情况下测试代码(隔离性),所以测试代码与其他类或者系统的关系应该尽量被消除。一个可行的消除方法是替换掉依赖类(测试替换),
用户1332428
2018/03/09
11.5K0
使用强大的 Mockito 来测试你的代码
JAVA实战:如何让单元测试覆盖率达到80%甚至以上
单元测试(unit testing)是指对软件中的最小可测试单元进行检查和验证。它是软件测试中的一种基本方法,也是软件开发过程中的一个重要步骤。
你可以叫我老白
2023/03/21
4.2K1
JAVA实战:如何让单元测试覆盖率达到80%甚至以上
[Java]单元测试组件Mockito
Mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。什么是不容易构造的对象呢?例如HttpServletRequest,需要在有servlet容器环境中创建获取。那不容易获取的对象呢?如一个JedisCluster,需要准备redis相关环境,然后设置进去等等。
宇宙无敌暴龙战士之心悦大王
2023/04/03
4.2K1
#Android单元测试学习总结「建议收藏」
在Android Studio中新建一个项目的时候,app的gradle中会默认添加单元测试的相关依赖库:
全栈程序员站长
2022/09/06
5.3K0
#Android单元测试学习总结「建议收藏」
两个基于spring的单元测试简单样例
单元测试,从一定程度上可以看出一个同学达到的层次。但又不完全是,有时可能只是一个思考方式的转变。单元测试有非常多的工具供选择,在java中,junit无疑是比较常用的。本文列出,junit在spring中的使用样例,供参考。
烂猪皮
2021/04/02
8860
Java测试框架推荐
java有很多测试类框架, 开发中有很多比如Mokito, powermock, wiremock, cucumber ,但是powermock测试,sonar不认其覆盖率.
CoffeeLand
2020/05/17
1.5K0
单元测试
  每个开发人员都写过很多代码、函数,但是你能保证你写的每个函数都能执行并且正常吗?   我们太多时间站在功能需求的角度来审视我们的代码,认为需求实现功能逻辑正常,我们就完成了自己的使命。功能逻辑固然重要这个也是我们的目标。但是仅此而已吗,首先作为开发人员要知道,代码的终极目标有两个:实现需求保证逻辑正常、保证代码质量和可维护性。测试人员只能帮助我们查漏需求是否完整实现,对于代码质量和可维护性是需开发自己保证的,所以单元测试必不可少。
OPice
2019/11/11
1.8K0
[mockito使用教程]部分/内部方法
spy会创建一个真实的对象,对象的方法都会被调用,除非你将某个方法打桩(stage),这个方法才不执行,走mock数据,下面是例子。
逝兮诚
2019/12/20
3.9K0
@Spy、@SpyBean、@MockBean、@Mock、@RunWith、@ExtendWith对比
在写单元测试中经常会用到Mockito,但是这些类似的注解非常混乱,今天总结一下相关的注解,说明其中的含义和实现例子。
查拉图斯特拉说
2023/11/09
1.3K1
@Spy、@SpyBean、@MockBean、@Mock、@RunWith、@ExtendWith对比
相关推荐
Mockito模拟进行单元测试
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档