00:00
那我们叫测试Tom cat啊,现现在咱们先起一个Tom catd出来,嗯,咱们就在这个零五上起一下吧,CD user。卡特琳娜热。现在已经起来了,对吧,然后我们返回一下这个Tom cat。105。8080。看现在是这个样子的,对吧,那这个样子呢,这是已它它也是动态的啊,这是一个JSP文件是吧?然后呢,我们先来看一下我们请求这个JSP文件,它的这个并发量是啥样的。105的8080是吧。在这儿。105的。8080。
01:01
然后直接给他上到这个10万啊走。这个手残了,说,嘴里念着105,然后心里想着108。哎,大家看啊,中间这个停顿就明显慢于这个NG了是吧。虽然说他这个慢的并不是特别明显是吧,这个Tom cat啊,这就是下载的,呃,这这是什么版本的,我们看看。就是1TOM8.5啊,下完之后呢,啥都没干啊。嗯。看这有没有一些有用的信息。可以看到的。没什么特别的是吧。
02:03
JVM1.8是吧。这个看到这中文的就就就挺。挺这个不习惯的,一般来说我们看见都是这个。英文的CAD,诶搞定了,然后我们看一下这个结果啊。嗯,它这个QPS大家看啊,能到3000多。是吧,延迟肯定要明显的要高一些。而且同学们你自己在测真实的项目的时候,你最好是在压测之前啊,你先访问一下,因为有很多的这个,呃,这个项目你部署到他们cat之后,他第一次他得先初始化一下啊,你先访问他一次,然后再去压缩,这样的结果会更客观一点啊。然后现在这个吞吐量啊,25310啊,这个明显要高于我们刚刚这个测这个N这个吧,这是为啥呢?啊,其实这就是因为咱们这个。
03:03
呃,这个这个这个返回这个结果数据啊,它比较大一些啊,你返回的结果,嗯,明显要比这个我们刚刚这个要大,大家看啊,这这零很多了,我就不数了,大家看这个总共它传输的这个数据,这是1625个零对吧,你看这这个传输的数据有多少。啊,就是它每这个页面里边访问的这个单一的HR面页面它就比较大。Tomcat的并发量其实单机来说呢,一点都不低了,它能跑到这个3000多QPS。是吧,当然这个页面的比较逻辑比较简单啊。单纯从这个基本的性能来说啊,已经还可以了,它已经呃,已经逼近于这个NG了,但是只是说逼近啊,NG可能能跑到2万左右,就是相相对来说比较比较一般一点的这个服务器的配置吧,然后Tom cat能跑到七八千啊,大概是这个比例,就是真实在机器上去测,咱们今天没有真实的服务器啊,就在机这个单机上能看到这个比例就可以了,还好,对吧,没有想象的那么差,可能大,呃一个大家认为一个tomcad就几百并发并不是的啊。
04:12
而且吞吐量也一点都不低,它怎么做到这么高性能的呢?因为这个刚你看刚才我在这扒着在找,其实想看它这个,呃,网络模型,它这个启动模式我看了半天也没也没找着现在的这个tomcat啊,你在Linux下这个安装的这个,或者直接解压的这个tomcat,就是Linux版本的tomcat,它默认的应该是以API的形式去运行的这个网络接口。啊APR呢,就是在本机,在它的本机呢,用这个DR的形式啊,不是D用这个这个本机的C语言去实现的网络接口,然后让它的性能。嗯。变得非常非常的高啊。这是Java的NIO啊,解决的这个问题啊,这呢啊,你看现在这是啊,使用的是呃,NIO的这种方式启动的啊。嗯,你这个Windows上安装的这个。
05:03
这个tomcat它默认启动是Bo的,同学们也可以试试把这NIO在配置文件里,你给它改成APR。啊,给它改成APR,它效果效果应该会更好,这是8.5,这这它不是API啊呃,应应该是有的版本,默认的配置就是APR的这种方式,那个性能会更高一些。那这是对于tomcat的压测,那如果要是在它的上面呢,我们再接一层反向代理,我们再看一下这个结果。然后这是单击Tom cat,这或者叫直连Tom cat。我们把这个结果给它。抠出来。啊,然后呢,我们在配置文件里。
06:04
当然,这也是开了这个keep live的啊。给他代理到你的。他们开的啥?保存,然后这边呢,重新reload一下。然后再跑一下这个测试走。不好意思啊,应该像这个。那反向代理服务器去压测来走。对,没有明显的变慢,对吧。这个压测的数据量啊,就跟大家说一下,你千万不要设置的太少,这个10万其实就已经很少了啊,正常情况下你要压个起码要压个五分钟以上啊,你你这个就就压这么一下,这个看不出来,看不出来问题的,有很多时候你你跑个跑个十万二十万的这个这个这个请求系统一点问题都没有,但如果要是这个请求一直十万二十万的话,你跑半个小时。
07:19
那这系统可能就会崩了,这会儿就特别检验你这个呃,代码的健壮性了啊,就是内存对于内存的管理。我们看和刚才的这个直连的对比。这拉过来。看这个整体吞吐量。哎,还明显有高了那么一了,大家看见了吧,对吧?啊,然后这个延迟也稍微低了一,低了一。整体延迟也变低了。是吧,然后这个呃,QPS。哎,QPS明显还提升了。是吧?这是这个我们通过这个返佣代理服务器啊,然后让他来帮我们去代理一下后端这些请求,同时呢,复用了这些连接,因为我们直接压这个,呃,Tom cat。
08:08
这里边的问题就在于直接压tomca的时候呢,没有这个连接复用的概念,然后我们去压这个N,因为N的本身的性能呢就比较高,它的这个能处理的并发量就是我如果要是从AB test值去去连接像我们这个NG格的话。呃,这个它能够产生的并发量是高于我们去直接连tomcat的,这个我说的不知道大家能不能理解。给他解释一下。他为什么反向代理要比这个我们直连要这个速度要高呢。你看这是我们现在这个AB。阿帕奇奔驰,我们现在连,如果要是连这个tomca这p test啊,它不带这个QLA这些东西啊,只是给你并发发请求,那只是连tomcat在这个环节是没有keep alive的。
09:04
对吧?啊,然后这个连接呢,它都没有复用啊,那如果在中间加一个这个NG。大家看啊,这个我们直连tomcat的,呃,这个QPS是3200。然后我们这个AB呢,如果要去直连这个NG的话,大概是7000多,我就不翻了啊。这大概是7000多的这个QPS。那么你想我连NG,虽然说他没有用这用到这个呃,Keep live,但它已经能到7000多了,然后N再去连这个Tom cat,他们俩之间是不是有这个keep live的感觉?是不是我们的配置文件里配了对吧?这俩直连在中间是有keep level存在的。
10:00
是吧,啊,所以它这个速度要更高一些,那么接下来再跑一下给大家看看,我们把这个keep level的这个关了,你看看这个效果是啥样的。然后把这给关了,这还是他cat啊。然后现在在现呃,在这个upstream里边这几这这台机器啊,在被返向代理process的时候呢,就没用到这个keep live。然后来咱们重启一下看看。再泡,你看这个结果。直连,然后我们把这个反应代理人给给。抠出来。等会儿吧,他还在这挑呢,是划不上。
11:09
这速度明显要比刚才要慢得多了,大家看啊。来,我们把这个反应袋里的tomcat,这是。通过反应代理。这是嗯,这个反向代理tomcat,然后再加上people live。然后这个结果是这这样,然后我们这个直连。不是这个,关掉这个keep live。不加keep alive。咱们对比一下这个结果。
12:00
呃,我们看这个它的这个,呃,Transfer rate,就是整体的吞吐量明显就变低了,看见了吧,23291了,然后延迟变高了。是吧,这个呃,十毫秒和0.3毫秒,这最快0.3毫秒,这是最快0.2毫秒,然后这个这还有一关键指标,这个呃。最长延迟这229个,这边有143个,然后QPS。2957是吧,这边是4277明显变低了,这个变低的它是比例啊,而且这个随着硬件的提升,它的比例会放大啊,它会放大。你看没开的,它降低了这么多,那和我们直连呢,我们看一下。比起来差不太多,大家看啊,这的QPS是322,这是2957对吧,它降低了,因为中间呢,它多了一个这个N几克嘛,肯定要比直量要低一些是吧,然后延迟也稍微低了,那么1NNE,然后这个吞吐量稍微低一点,差不太多,但它一定是低啊,它差不太多。
13:13
然后这个呃,开了这个keep live,提升效果非常非常的明显啊,这是咱们的这个呃一些测试,我也想通过测试呢,更客观的去把这个呃,这些这个配置和一些调优的这个呃给大家说清楚,当然这个调优啊,就不光是这一些,咱们在。专调优的专题课里呢,还会再给大家讲一些这个额外的一些调约的一些参数,咱们现在能看出来people live能给大家带来明显的这个提升了,所以呃,我们在tomcat前边再加一个N几个四,那绝对不只是为了这个,嗯,能够这个这个。做这个动静分离,做这个负载均衡啊,他还能够明显的提升这个并发量,当然这个呢,你别跟面试官说对吧啊,你也别在你你也别认为就是因为加了这个,呃,NG,所以它并发量变高,那是因为我们现在这客户端啊,它并不支持这个keep life啊,往往我们的这个上线之后,这个项目,它的这个客户端都是我们正常的浏览器,那浏览器它是支持keep live的。
14:19
啊,所以这个值零和加了,这个加NG,你要自己决定去做技术选型,在这给大家简单说一下吧,省得你记不住。就是什么时候在tomcat前面前前置一个这个NG克性能有明显提升呢,什么时候在他们K前置一个NG性能有明显提升呢?啊是因为我们的客户端啊,它不支持这个。这个这个keep alive啊,像有一些这个特殊的这种场景下,但一般来说我们也会更努力的去让这个客户端去支持这个连接复用嘛,对吧,但如果真的要是有一些硬件啊,它不是浏览器,或者有一些浏览器,它本来它就没开这个,呃,Keep live,再有就是一些智能的设备啊,或者我暴露的就是一些简单一些接口。
15:16
对吧,那呃,我想要让他这个这个。性能稍微提升一下,我就可以在前面加一个N几个啊N几个它。不管你客户端它支不支持这个keep level,它的性能就已经非常高了,对吧,然后tomcad呢,嗯,要比它低,所以他代理一下,这样能提升这个性能啊,这是咱们这个呃,Keep alive它带来的效果啊,然后大家在自己的这个呃,实际的项目当中,你也一定要这个。斟酌,我在这儿给大家讲这一切东西呢,只是抛砖引玉,你要切合自己实际,实际的项目,实际的需求,来去配置你的NG,来去调整你的系统架构。
16:00
呃,更多的这个,呃,这些这个可配置的选项呢,咱们一点一点给大家讲啊,慢慢的学的越来越多,然后你也能慢慢的呢,做一个更合格的高级程序员,有朝一日呢,我们也可以做一个系统架构师了啊。
我来说两句