首页 > 其他分享 >性能测试知识科普(一)

性能测试知识科普(一)

时间:2022-09-18 23:55:21浏览次数:68  
标签:知识 窗口 收费站 通过 并发 TPS 测试 收费 科普

前几天在技术交流群,有同学问了一个性能问题,由此引发了很多同学的追问:

  • 并发到底是什么鬼?
  • 怎么判断系统到了性能瓶颈?
  • 监控那么多指标到底关注哪些?

应这些同学要求,这篇文章做个性能测试理论知识扫盲科普,不讲似是而非的理论,就聊一些工作中很常见的术语。

我一直觉得性能测试是很简单的事情,但工作中遇到很多同学,基本都是找个工具无脑堆并发,然后压测统计数据完事。

我觉得问题并不是这些同学技术不够好,而是对一些基础的知识理解有所误差,或者换句话说:

大脑:我学会了。

实践:不,你还没学会。

 

在学习一门新技术或者在工作实践中,我一直提倡的是“工欲善其事,必先利其器。欲利其器,必晓其理”。

作为性能测试知识科普的第一篇入门文章,我想聊聊大家都很关心的几个词:并发、TPS、响应时间。

或者站在我的角度来说,搞明白了这三个词,性能测试就入门了。当然并不是单纯的明白术语的理论解释,而是知道它们三者之间的关系,彼此的依赖影响。

 

收费站的故事

先给大家举一个很经典的例子:高速收费站的故事。

假设现在有一个高速收费站,有4个收费窗口,每个窗口平均5秒通过一辆车。

其中有2个ETC窗口,平均1秒通过一辆车。

现在有100辆车同时到达收费站,需要多久可以完全通过?平均每辆车通过耗时多久?如何提高通过效率降低通过耗时?

以上面的例子来讲,假设它是一个性能需求,你看到的第一眼会想到哪些知识点,要考虑哪些因素?

如果是我的话,我大概会想到下面一些因素:

  • 收费站是服务器,4核的配置,官方(或者说历史数据表明)性能表现是平均响应时间=5秒;
  • 2个ETC窗口,可能是请求打标做了业务(或者技术上的)优先级区分,要考虑这里的具体场景;
  • 100辆车同时到达,是压测工具模拟的“并发数”,但实际并不是服务器单位时间内同时处理的请求;

需求问的是通过的总耗时和平均响应时间,以及如何提高通过效率降低通过耗时。这个问题怎么解决?

 

如何理解并发?

严格意义上讲,并发指的是服务端单位时间内接受到了多少请求,这是衡量系统面临多大压力的一个重要指标。

但现实情况却是,很多同学拿着常见的压测工具,用并发线程数/VU等作为所谓的并发数来理解。

就像上面的高速收费站故事,你以为的并发是100辆车,其实对系统来说真正的并发是四个收费窗口。

因此,我建议各位同学在学习性能测试的时候要明白一点:所谓的用工具模拟并发数,其实只是为了满足让系统承受足够压力的动作。

 

如何理解TPS?

TPS,官方解释是每秒事务数,它描述了系统在单位时间内完整的处理完一整个业务请求的过程。

以上面的高速收费站为例,有4个收费窗口,每个窗口平均5秒通过一辆车。其中有2个ETC窗口,平均1秒通过一辆车。

请问整个收费站的TPS是多少?计算方式:(4个收费窗口*1)/5秒=0.8。

当然,这里要区分业务场景,如果单独论ETC场景,2个收费窗口,1秒1个,那TPS=2。

大家明白了吗?在真正的性能测试中,TPS是需要考虑到具体的业务场景,并且要求请求在逻辑上被完整处理。

从技术角度来说,如果是写的请求,需要确保数据库或者缓存的数据做了符合业务逻辑的变更。

如何理解响应时间?

聊完了并发和TPS,接着聊响应时间。

如何理解响应时间呢?这个要从2个维度来理解。

client:客户端发起请求,通过网络传输到服务端,服务端按照逻辑处理完成,并返回response给到客户端。

server:从接受到请求开始处理,到完成逻辑处理并从服务端发出,OK到此结束,一个统计区间完成。

换成高速收费站的场景,就是车到了收费窗口,我刷卡扫码支付,然后抬杆放行直到车出去下一个车进来。

这个过程的耗时就是所谓的响应时间。

至于我们常见的平均响应时间和99响应时间,只是不同维度的统计方法而已。

 

三者间的关系和影响

如何提高通过效率降低通过耗时,这是上面的问题。

在解决这个问题之前,不妨代入一下真实的高速收费站,我们想象如下几种情况。

  1. 100辆车同时到达,但只有四个收费窗口,需要排队按顺序进入,这是队列机制;
  2. 100辆车同时到达,但只有四个收费窗口,万一工作人员换班午休,这是系统维护;
  3. 100辆车同时到达,但可能有交警路政检查,四个收费窗口,其实只有2条道通过,这是限流;
  4. 有个没有安装ETC的车走了ETC的车道,过不去,需要倒车换到其他收费窗口,这是堵塞或者异常;

看完了上面的几种情况,我们来看下如何理解三者间的关系和影响。

  1. 提高通过效率,可以增加收费窗口(服务器升配置,4核变8核);
  2. 提高通过效率,可以让更多车主安装ETC(技术优化,都用缓存);
  3. 提高通过效率,可以通过某种机制确保车道不走错(异常处理,快速失败或放行);
  4. 提高通过效率,可以通过7*24小时轮班确保收费窗口正常提供服务(服务的可用性);

还有其他提高通过效率降低通过耗时的方法吗?有!

  1. 高速3车道变6车道(扩展网络带宽);
  2. 多开设几个不同的收费站(服务扩容);
  3. 大货车小客车车道时速区分(分流机制);
  4. 大货车小客车走专门的收费站(服务分组);

 

最后总结

  1. 真正的并发是服务端单位时间内接收并处理的请求数,并不是工具模拟的并发线程数。
  2. 其他条件不变的情况下,要提高TPS降低响应时间,最简单的办法是升配+扩容+缓存。
  3. 高并发/高性能/高可用其实是指用更少时间处理更多请求,且服务长期提供正常服务。

这篇文章的目的是通过一个很典型的例子帮助学习性能测试的同学理解几个常用的术语,下篇文章,聊聊常用的性能测试策略。

 

标签:知识,窗口,收费站,通过,并发,TPS,测试,收费,科普
From: https://www.cnblogs.com/imyalost/p/16706311.html

相关文章

  • 测试工程师知识架构
     既然寒冬将至,作为IT民工的测试人来说,更应该做好过冬的准备。软件测试是技术岗位,那就要靠技术说话。不断掌握新的技能,提高自身技术能力也就变成了目前测试从业人员迫在眉......
  • 1.2w+字!Java IO 基础知识总结
    IO流简介IO即 Input/Output ,输入和输出。数据输入到计算机内存的过程即输入,反之输出到外部存储(比如数据库,文件,远程主机)的过程即输出。数据传输过程类似于水流,因此称......
  • pytest测试框架2【控制用例的执行顺序】
    1.pytest加载所有的测试用例都是乱序的,如果想指定用例的顺序,可以使用pytest-ordering插件,指定用例的执行顺序只需要在测试用例的方法前面加上装饰器@pytest.mark.run(order......
  • 0-2 测试面试题- 测试方法_压力测试怎么测_设计朋友圈点赞_HTTP报文段_HTTP请求报文_T
    面试题及解析答案来自牛客网https://www.nowcoder.com/exam/interview/5了解什么测试方法?测试的方法?写测试用例的方法?分析测试点的方法?测试是个大工程,很多环节,具......
  • static知识点
    在JAVA中并没有全局变量,因此static变量也称作静态变量,静态变量和非静态变量有很大的区别,只要一个成员变量使用了static关键字,那么这个变量就不再属于自己,而是属于整个类。......
  • 汽车知识点大全
    汽车在家庭中的作用越来越重要,但是买车有很多注意点,最近整理了下分享给大家(图片请点击放大查看),希望对大家有所帮助! ......
  • 《C++ 基础知识杂记》目录
    本篇为随笔《C++基础知识杂记》的目录A篇C++指针A.1C++指针与一维数组名A.2C++指针与二维数组名A.3C++一级指针与const关键字A.4C++二级指针与const关......
  • pytest+allure 之测试报告
     'allure'不是内部或外部命令,也不是可运行的程序或批处理文件。如果运行生成allure报告时,报此错误,大多是没有配置allure环境变量;具体如何配置,见下面文章详情;  if......
  • 万字总结前端的各种知识点
    《我的前端学习笔记》目录:[TOC]事件循环TheEventLoopmodelisessentiallyaconcurrencymodel,whichisgoodatI/O-bound.AsuccessfulcaseisNode.jswhi......
  • Airtest+Poco多设备并发自动化游戏测试框架(遇到的问题)
    项目:基于unity3d项目涉及相关模块:关卡,战斗,商城,装备,强化,天赋等记录:Airtest+poco+pycharm自动化游戏测试过程中发现的问题以及解决的方法目标:自动化打包安装,多机器并发测......