00:00
好,那接下来的话呢,咱们来看下一个问题,叫做性能评价或者叫性能测试的一个指标,哎,这儿呢,咱们呃,从两个角度来说啊,第一个呢,就是作为我们一个外部应用啊,一个系统的角度来,另外呢,我们是呃,从这个JC的一个角度呢来去理解啊,因为呢,我们在讲啊,大家回忆一下啊,咱们在讲这个上品的时候,是不是专门也提到过关于垃圾回收器相关的一些性能指标是吧?哎,当时呢,我们其实也提到过关于停顿时间啊,或者叫响应时间,吞吐量啊,包括占存占用这个内存的一个大小,哎,我们当时也提到过这样的一些指标。那这里的话呢,我们刚才说了还有一个值,还有一个这个角度呢,就是我们从一个外部应用,一个运行的一个角度来说的,行,那首先的话呢,咱们来看其中的第一个点哈,哎,关于停顿时间,或者叫响应时间。呃,这儿呢,我们说啊,一个外部应用呢,它其实不是一个孤立的个体,对吧?哎,它相当于是构成了一个系统,那这个系统里边呢,有很多的组成部分,那每一个组成部分呢,它的一个性能的好坏,是不是都会影响到我们整个系统的一个性能啊。
01:05
哎,是这样子的,那所以呢,我们首先呢,从一个呃系统的一个角度,那我们来看一看什么叫做停顿时间啊,从那个系统的角度来说啊,那停顿时间呢,就是咱们提交一个请求跟返回该请求的响应之间的一个时间啊,比如说呢,大家做一个用户的一个登录,对吧?当你把这个用户名密码填写完以后呢,我一点登录这个按钮,这就呢叫提交请求,那跟返回告诉我说这个登录成功或者叫登录失败,那中间的这个相隔的这个时间呢,我们就称为呢叫做响应时间。或者你也可以呢,叫做停顿时间也行,那咱们一般观注呢,当然就是平均响应时间了,对吧,你不能用最大或最小,我们只求平均啊,这个更合理一些,那常见的一些操作的显示时间列表是什么样子的呢?这呢罗列了一些啊,比如打开一个站点,那通常的话呢,显示时间是几秒钟,查询数据库中的一条,呃,记录这个呢,注意是有索引的时候呢,十几毫秒啊等等等等等啊这呢就是我们平均的一个情况,那如果说呢,你是我们平均情况的一个几十倍甚至上百倍,那显然的话呢,它会影响到我们整个这个系统的一个响应啊,性能呢,就相对来说差一些。
02:13
好,那么另外一个维度啊,刚才咱们也说了啊,在这个垃圾回收这个角度上来讲,我们也比较关心这个停顿时间,或者叫响应时间啊,咱们追求的一个叫低延迟是吧?啊,那这里边儿呢,我们这个暂停时间呢,就是诶什么意思啊,这是咱们上篇讲过的啊,执行垃圾收集的时候。程序的工作线程被暂停的一个事件。哎,咱们知道呢,垃圾回收的时候呢,咱们是不是叫,哎叫什么STW是吧,哎,Stop the word这时候呢,我们工作线程呢被暂停了,那暂停花费的这个时间我们就称为呢叫暂停时间,咱们有一个参数叫max j c POS minutes啊这样的一个参数呢,去进行设置最大的暂停时间。OK,两个角度来说的啊,一个是从外部应用的角度,一个是从我们垃圾回收器的来,垃圾回收的角度好,第二呢,我们称为它叫吞吐量。
03:04
吞吐量顾名思义就是单位时间之内完成的工作量啊,比如说你你这一天你喝了多少水呀,一天写了多少个作业题呀,刷了多少个算法呀,是吧,这个都称为叫存储量,单位时间就是一天呀,一年呀,是吧?哎,有一个单位就可以了啊,哎,完成了这个工作量,那这个很好理解啊,在咱们这个JC当中啊,咱们是不是也提到过关于这个存储量的一个概念,对吧?哎,您看当时我们咋说的呢?啊,说在这个JC当中。哲学当中是吧,吞吐量,什么叫吞吐量,就是用户,呃,运行用户代码的一个时间。占咱们总运营时间的一个比例啊,总运行时间呢,就是你用户呃,这个代码的一个运行时间,加上这个内存垃圾回收的一个时间是吧?呃,加一起就是一个总时间,咱们呢,用一个参数啊,这叫j c time ratio是吧,通过这个参数来衡量的。哎,这个参数呢,我们写的是一个整数啊。
04:00
嗯,还记还记得不这个N呢,哎,其实它就相当于是我们这个程序运行的一个时间跟我们内存垃圾回收的一个时间的一个比例是吧,那它的一个比值关系啊,那这个N越大的话呢,是不是代表着我们程序这个运行的时间是不是就越多呀。哎,程序运营的时间越多。那不是好事吗?那那说明我们这个存储量是不是就比较大一些啊,你看我们这个N越大是不是对应的我们这个数据啊,N越大这个数呢就越大,然后这个数呢,是不是就越小,然后有个符号啊,一减去这个数就越大啊,吞吐量就越大嘛。啊,这个回忆一下啊,咱们原来提到过行。这老师我们说的这两个概念啊,哎,从一个web应用程度这个一个角度去说的话呢,哎,就是这样来理解就行啊,下边呢,是一个并发数啊,这个很好理解,就是同一时刻呢,对于服务器有实际交互的一个请求数。啊,这里边呢,还存在一个经验的问题啊,呃,什么意思呢,就是这儿呢,和我们说网站在线的用户啊,它有一个关联关系啊,哎,网站在线的一个用户。
05:02
哎,往这转一下,那比如说呢,我们有1000个人,哎,同时在线啊。呃,1000个人的一个同事在线啊,那一般的话呢,我们去估计这个并发数的话呢,呃,这个会在5%啊,一般的话啊,呃,5%~15%之间。啊,一般的这个并发数呢,会在5%到百分之十十五之间啊,那也就是哎,同时的这个并发量。哎,并发量有多少呢?大家算一算,1000呢,乘以5%是不是就50啊,哎,那这个呢,就是50到一百五是不是之间啊。哎,这个呢就可以了,哎,有这样的一个概念就行啊好,这呢是我们提的这个叫哎并发数,那第四个呢,我们叫内存的占用,那这个呢,实际上是我们JC的时候比较关注的一个数据啊,就是我们这个堆区啊,占用的实际内存的大小,因为一般呢,我们说这个OM呢,都是由于这个堆空间影响的,是吧?啊,当然方法区啊,我们叫圆空间啊,也是有可能造成的,主要呢是堆啊。
06:03
好,那这里边的话呢,我们主要呢,来谈一谈,哎上述这三个啊,呃,因为这个呢,主要是针对于这个GC的,哎,这三个之间的一个关系。这儿呢,我以高速公路通行的这个状况为例呢,给大家呢,诶一个形象的一个说明啊,要不呢,直接我们去描述,大家可能觉得比较干一些是吧?啊那这里边儿我们以高速公路这个通行状况为例,咱先说这个什么呀,叫吞吐量啊。哎,吞吐量,这个吞吐量可以理解成什么呢?就是每天。哎,通过高速公路。哎,每天通过高速公路的这个,呃,高速公路收费站吧。哎,收费站的这个车辆的数目。哎,这个呢,我们就称为呢,叫吞吐量,或者呢,大家也可以理解为。哎,理解为啊。
07:00
这个收费站啊,是不是收取的这个这个过路费啊。哎,收取的这个,哎或者叫高速费也行是吧。哎,我把你字体呢,稍微调大一点啊。这个呢,就是我们说的这个叫哎吞吐量。嗯,存储量就是单位的话呢,就是每天,然后呢,我们说一下这个叫并发数啊。那并发数的话呢,那就非常好理解了,那就是这个高速公路上是不是正在行驶的车辆数嘛。高哎,高速啊,公路上正在。行驶的车辆的一个呃数目。现在有多少车在高速公路上,这就是现有的一个并发数,那接下来的话呢,我们来看一下,这个叫哎,响应时间呗。这个响应时间的话呢,那就是你这个车速是吧。那车速的话就是响应时间好,那下边注意了,咱们看一看它们三者之间的一个关系是什么样子的啊。
08:01
那比如说我们先说一个初始场景,现在这个高速公路上的这个,呃,车的数目呢,比如说比较少,那就相当于这个并发数是不是比较低呀?呃,比较少的情况下呢,哎,那相应的大家想一想,是不是这个车速啊,是不是就比较快啊。啊,响应时间呢,就相对比较快是吧,并发数比较小,响应时间的话呢,呃,就是比较快一些了啊车速就比较快了,那这时候这个吞吐量大家觉得高吗。哎,是不是也不算太高啊啊,也不算太高啊,这吞吐量呢也不算太高,好,然后随着着我们这个高速公路上这个并发数呢,越来越多啊,车呢也越来越多了啊,那这个时候呢,哎,我们的这个车速的话呢,相应的会受一些影响,就是并发数高的时候开始增多了,我们响应时间的话呢,就会降下来是吧?哎,车速呢,就会稍微的有所降低,但是的话呢,我们整体的吞吐量是不是有明显的一个提升啊。啊,收费收的多了。啊,收费收的多了是吧,这是我们说的这个第一个环节啊,就并发量呢,渐渐的增多了,然后的话呢,我们这个车辆呢,越来越多。
09:08
车辆越来越多呢,大家想想我们这个车速呢,是不是就越来越慢呀,车速越来越慢呢,反而的话呢,诶我们看到有些拥堵的情况,导致我们这个吞吐量呢,反而倒是降低了。对吧,并发量越高越好吗?诶并发量高的时候呢,车速低了,然后整个有一些拥堵导致呢,这个收的高速费呢,反而到降低了。哎,不增反降是吧,然后随着我们这个车辆越来越多,就像北京的这个早上这个八点钟左右,跟这个下午五点以后一样啊,你看北京的话呢,这个基本上就一片红是吧?啊你想想这个车太多了,那这时候呢,一旦出现一些特殊场景,比如说车跟车之间擦一下啊,碰一下啊啥的,然后整个是不是交通线全部就堵死了。那导致呢,这个响应时间这没有了,车速零车全堵到这儿了,那你这个吞吐量还有吗。是不是自然而然也就没有了,那这时候高速公路啊,停车这个这个高速公路的这个收费站是不是就变成这个停车场了,哎,相当于我们整个的资源耗尽。
10:08
OK哎,通过刚才我这样的一个举例,大家呢,能够形象的去理解这三者之间的一个关系啊,那我们这个目的呢,就达到了。啊,目的就达到了,好,那刚才注意啊,刚才我们提到的这个停顿时间,吞吐量并发数,我们是从一个外部应用的一个角度呢,我们比较关心的这样的三个指标,那如果从我们GVM调优那个角度的话呢,咱们重点关心的实际上是这两个指标啊,就是我画红的这个啊,这个呢是咱们说这个GVM调优的时候啊。哎,主要关心或者说主要的我们在这个JC的时候呢,提到过的这两个指标,从一个外部应用的角度来讲的话呢,诶12123是吧,四呢也属于调优,但是不是说那么关心了啊,主要是一二。行,那这样的话呢,我们就把这个性能评价或者测试的指标呢,就交代清楚了,那那接下来呢,我们再学习就正式开始第二章啊,相关工具的一个学习了。
我来说两句