00:00
那接下来我们再来编写其他功能之前,我们再来说一下压力测试,压力测试的文档呢,也给大家放在了第四章,性能与压力测试。那我们说什么是压力测试?在我们分布式开发的时候,那将每一种服务呢,我们都抽取成一个独立的微服务模块,那这个微服务模块在我们真正的上线之前,乃至于我们上线以后,我们都要对它先来进行压力测试,那才投入正常的使用。那压力测试呢,主要是为了寻找我们当前的这些服务,比如我们当前的这个系统,在我们当前环境下,当前的软硬件环境,比如我们现在是Linux系统,我们4G的内存,四核的CPU,那么在这种环境下呢,它最大的负荷量也就是它的系统瓶颈,那我们知道了这个系统瓶颈,我们就可以通过一些负载均衡配置,我们避免呢给这个系统在单位时间内发送太多的请求。把这个系统呢,导致它被压垮,以至于最终宕机,导致我们服务的不可用,所以呢,我们最终都要对这些来进行压测,我们要对他们的整个系统瓶颈要做到心中有数,而且呢,我们压测也是来协助我们来做优化的一个重要手段。
01:18
比如在我们压力测试的时候呢,我们就可以找出一些我们用其他测试方法非常难以发现的问题,比如我们正常的常规单元测试,我们只能测试功能的正确性,但在压力测试一上来以后,我们现在比如每秒同时呢,有100万个人,我们全部来访问他。那可能呢,我们就能测出这两种,比如我们的内存泄露以及并发与同步问题,那什么是内存泄露呢?比如我们这个接口没写好,我们在调用它的时候呢,每次在一个循环内不断的创建对象,并没有复用一些对象,那百万的并发一上来,那么的对象就会不断的被创建创建创建,以至于导致我们整个内存撑爆,那这是我们说的内存泄露,我们通过大并发的这些压力测试,我们就能发现这些问题,包括我们呢,也能发现我们代码的一些并发问题,我们这个代码呢,单线程跑起来好好的没什么问题,但是呢,并发量一上去,我就出现了各种线程不安全的各种情况,我们在压力测试呢,都可以来发现。
02:22
所以压力测试我们以后呢要经常使用,做到不对我们当前的这个系统心里呢有一个衡量的指标,它能承受多大的压力,如果我们要求编写一个高并发的接口。如果我们压力测试我们的性能没有达到我们的要求,那我们还可以参照我们压力测试期间的一些CPU、内存等各种指标。我们来分析我们接口的问题在哪,我们去来优化我们的接口,所以呢,我们再来说压力测试之前,我们先来说一下我们需要掌握的几个性能指标,这些指标呢,我们经常会说到,首先第一个是我们的响应时间,响应时间指的就是我们从发一个请求开始,到我们服务器接收到请求处理得到数据,我们看到数据结束,那这一段的时间就是我们当前请求的响应时间。
03:15
那这个时间呢,越短说明我们这个请求接口耗时越少,那我们的接口性能就越好。接下来呢,还有我们经常听到的hps,就是每秒点击数,还有TPS叫每秒处理的交易数,以及QPS每秒的查询数,每秒的点击数。那代表我们当前系统呢?我们在页面上点击请求,哒哒哒哒,我们不停的点击,我们能接受每秒多少次这种点击请求?因为我们每次点击都要给服务器发请求,来处理一系列的功能,然后完成响应数据。这是每秒点击次数,但这个衡量指标呢,我们一般不去看,因为它没有太大的意义。最重要的两个指标是TPS和QPSTPS指的是我们每秒处理的交易数,它的这个T的英文也叫transition,你也可以认为每秒的事务数。所谓的这个事物,我们不能狭义的理解为数据库的事物,我们应该理解为我们一个完整的业务做完,比如我们查询商品详情,或者我们下订单,那么整个下订单呢,要做的事非常多,除了要扣除库存,还要创建订单,还要计算价格等等等等。
04:31
那么下单的这个业务全部完成了,那么这个交易呢就完了,我们说这个事物就做完了,这就是我们的每秒的事务数,每秒能处理的交易的数量。那如果我们下订单,我们写的下订单的这个接口,那每秒能接收1万的下单,那说明我们的这个接口性能很好,那如果我们每秒我们写的这个接口也要调用一系列,我们每秒呢,只能处理一个,那说明我们就很慢,还有我们说的QPSQPS呢,我们称为叫每秒查询数,特别是我们经常某些功能,我们发送一个请求,要查出这个数据,然后呢,我们进行展示。
05:11
那我们的这个查询接口,我们最大能承受每秒多少次查询,我们也可以从压力测试里边得到我们最终的结果。而且呢,这也有一个大概的衡量标准,大家可以来看一下,那GPS我们就是每秒要处理的这些业务,那在金融行业呢,一般达到1000~5万之间,当然不包括我们互联网的一些秒杀营销策略,我们把这些呢不算包括呢,我们保险业务由于它的业务程度比较复杂,所以呢,他TPS可以要求的低一点。100,但是呢高的也要求很高,比如在10万之间,我们的一些制造行业,我们面向公众的数量也少,所以它的TPS呢可以低一点,但是我们大家一直喜欢使用的互联网的电商网站,那我们的TS就要求的很高,比如我们希望每秒能处理1万的交易到100万的交易,特别是淘宝双11或者京东这些做活动的时候。
06:12
那么整个服务集群合起来,那我们的能力呢,肯定要达到每秒百万级别以上的订单交易处理,这呢都是一些大致指标,大家参照一下就行了。那性能测试里边呢,我们还要关注的几个东西,第一个叫最大响应时间,那就指的是我们请求从发出到返回结果,比如我们测了100万的请求,那么有一个请求呢,花了90秒才有返回数据,那么这个90秒那就是它的最大响应时间,还有最少响应时间,我们发了10万的请求去来测这个接口,这个接口呢,有一个请求只花了。十毫秒就响应了,那它就是我们的最少响应时间。还有我们说的90%响应时间,这个呢也特别重要,比如我们写的这个接口,我们在压力测试期间,我们给他发了100万的这个请求,有90%都在我们一秒内返回了。
07:13
那说明我们写的这个接口还算是不错的,因为大部分用户都能短时间内看到结果。剩下的那个10%可能优化起来呢,就比较困难了,但是我们只要满足90%的用户,那就已经足够好了,这我们说的90%响应时间。要说从我们压力测试来看,我们一般呢,关注我们这几个指标,第一个叫吞吐量,它指的就是我们每秒钟能处理的这个请求数,任务数,大家也就认为认为成我们之前的这个QPS或者TPS都行,也就说我们的吞吐量,吞吐量这个指标呢,肯定是越大越好。所有的时间单位响应时间,响应时间肯定都是越小越好,那么吞吐量大了,说明我们的支持大并发,那么响应时间小了,说明我们的接口性能好,速度快。
08:09
包括呢,还有错误率,因为我们一批批量测试请求过去可能会出现一些错误,那么这个错误率呢,就得控制。不能100个请求过去全出错了,这就可能有问题了。那这就是我们压力测试的一些前置概念,大家要知道一些压力测试的性能指标,那么后来呢,就来主要来看这几个指标。那如何进行压力测试?我们的常用的有非常多的工具,比如阿帕奇AB就可以来做压力测试,包括阿帕奇也专门来写了一个解密特,它可以做比较专业的压力测试。包括现在流行的加特林,融入我们CCD里边来进行线上的压力测试都行。那我们呢,就以解密为例,我们来给大家测试一下,我们压力测试该怎么用。
09:00
好,下一节课呢,就来安装和使用我们的整个解密。
我来说两句