00:00
Hello,同学们,那接下来呢,给大家介绍一个压力测试工具,叫阿帕奇benchmark,这个压力测试工具啊,有好多种这个呃,我们通常管它叫AP test,它是比较轻量级一个简单的小工具啊,安装部署和运行呢都非常简单。啊,特别适合这个我们的这个机器啊,配置并不是特别高的时候啊,我们就可以用这个,呃,这个AB test啊霸奔驰,那我们先把它给装起来。这个安装的话呢,我们就用这个亚M的方式去安装,这个就比较简单啊,我们在咱们的这几个虚拟机里边啊,找一台机器给它装起来。嗯,我们就给它装到这个我们的tomcat上啊。嗯,安装呢,直接复制一下,用yam去安装就可以了。嗯,安装的时候啊,它并不叫阿帕奇奔驰马啊,叫HTTBHTTTD的tools啊,这是最早在嗯,阿帕奇HTTPD的这个,呃,Web服务器里边内嵌的这么一个工具在工具包里边。
01:12
这个安装的过程呢,可能跟网络有关系啊,本来这个工具包呢,它并不大。嗯,这个网如果不是特别好的话,可能还得再稍微等一会儿。我们先稍微等一等啊。诶,好了。那接下来怎么安装液。这个命令啊,其实嗯,也比较简单,我们通常用的呢,就是这杠C啊,这个并发数啊,还有这个杠N。啊,用这两个基本也就够了啊。还安装完了,然后装完之后呢,用AB这个命令你就可以试一下,然后这是它的所有的可选参数,然后在文档里边呢,给大家注射好了,中文的注释,这里边都是干嘛用的啊。
02:11
那接下来呢,我们试一试,呃,这个。先直接连接一下咱们这个NGS啊,就NG的直连咱们现在的这几台服务器里边呢,嗯,其中。0203,这就是两个N的外部服务器,我们用这AP test去压测一下,看一下这个结果,也给大家解释一下压测之后的这个,呃,这些数据究竟怎么看。嗯,我们先得检查一下,现在咱们这台服务器啊,是不是正常。点二和点三。102和103这两个都可以啊,都是两个干净的这个N是吧,呃,想要去向他发起请求,呃,实时压测的话呢,就是AB。然后用这个杠N啊这个表示呢,我们呃发起呃多少个请求,比如我们先给他来1万个。
03:07
你搞太少吧,这就没有压力了嘛,对吧,让他压力稍微大一点,另外呢,还有一个杠C,这是并发啊,你给他来30,然后后边跟这个地址。HTTP冒号双斜杠192.168.44.102对吧,我们现在这台机器是104,我们向102去打这个请求来看一下。是不是少一个这个对吧?啊,少了一个这个这个这个这个根号结尾啊,这我们向这个地址去发送请求啊,这样它就成功了,成功之后呢,我们先简单简单看一下这个结果。嗯,首先呢,它会把这个版本号打出来,这都不重要啊,它重要的是在嗯下边这个环节,它是以这个1000为一为一个单位啊,然后呃,并发就发请求,每一天发一次是吧。
04:11
然后我们现在呢,总共发了1万个,他finish了1万个request,一共发了1万个请求,这边的关键信息我们看一下啊,首先看这这叫transfer rate,我们通常管它叫吞吐量啊,就整体的这个速率啊。它能达到多少啊,其实就是,呃嗯,比如说我们去下载东西吧,它每秒下载的速度是多少,但是这并不是单一计算这个一个人的下载速度,这是所有的这个请求全都打过去,总共的这个速率是多少啊,所以我们管它叫吞吐量,整体系统的吞吐量是多少,现在呢是。1918,然后大K是吧,然后这个很这很明显是没有压满的啊,啊这个如果压满的话,呃,什么叫压满呢?就是它没有跑满这个速率啊,第一就是有可能我们现在发的请求比较少,第二就是它返回的这个字节也比较小,你每次就下载不到1K的东西,因为现在咱们这个页面。
05:08
极其特别的简单,就就这么这个几行字符,你的这个呃,传输的这个呃,过程当中非常快,但是这个建立连接返回请求的速度呢,相对来说比较慢,所以这个速率就没有跑满,然后看这呢,这是。呃,Request second,一般来说呢,我们就管它叫什么,呃,Query second啊,Request second跟这个query我们都可以理解成一个,这就是QPS啊,所谓的QPS其实就在这儿,每秒的并发量现在是7000多,就是对于我们现在的一台NG格简单的压测了1000,我们现在呢。呃,就简单压测了1万,但每秒能处理的数,这个QPS是7000多,这时候数据很恐怖啊,当然啊,现在因为咱们这台机器的性能,呃,其实并不高,因为我是虚拟机里边跑的,对吧?本来虚拟机的性能就不高,另外就是给他分配的资源也不多,就单核一个G的这个配置,那肯定呃,这不是一台NG的极限的性能,当然这个QPS的高低其实往往会衡量我们现在的系统的并发量,并发能力有多少,对吧?啊,但是啊,也得根据你的这个。
06:18
所请求的这个数据的复杂度,你后台如果要是有非常复杂的请求打过去,那这QS肯定也高不了,然后就是还有就是你的网络带宽,你的系统硬件等等等等,这是综合因素啊。然后这个这是总共传输的数据啊,以及它这个想延迟啊。这最小延迟是多少,还有这下边儿的一些这个呃,这个这个其他的一些呃,延迟的数据啊。呃,因为咱们这个现在压测的这个速度,这个这个数据呢,比较少是吧,我们给它加大一点,现在1万嘛,对吧,我们给它改到10万,我们再看走。那这会儿呢,就以每1万为一次,然后就处理这个请求了。
07:02
大家看啊,现在这个速度呢,其实还是比较快的啊。然后咱们再看一下结果。大家看啊,这个是,呃,咱们。向他发了10万的这个请求之后,然后返回的结果是啥样,大家可以看现在的这个整体的吞吐量。啊,这个11925大K了对吧,然后这个。嗯,像延迟,还有这个QPSQ基本都没什么太大的变化,对吧,那我们接下来把它给记下来。把这个给它抠下来,然后我们把这个呃。几个这个压测的结果呢,我们去对比一下,然后看一下这个系统的性能究竟是啥样的,然后把它粘到咱们的文档里。同学们自己,呃,自己做实验的时候你也可以这么干啊。这是单。嗯,NG。就不叫单NG,它直连NG,直连NG,然后简单页面,然后返回的这个结果。
08:12
好,现在是直连啊,对吧,直连的QPS比较高,能到7000多是吧,然后咱们再看,呃,我们通过N这个词去代理一下这个。我们现在访问的这个页面,我们现在访问的是,嗯。这个102对吧,我们压测的这个请求地址也是这个102是吧,我们的我们接下来这样在它前面呢,加一个反向代理服务器,然后我们再看一下这个效果是啥样的,那就把这个101上面呢给他啊代理过去,接下来我们再发请求,就向着101去这个发请求。那我们改一下配置。有事local等几个事。
09:03
来看啊,现在我们是已经配了这个keep live的啊,我们先把这keep live相关的,这个upstream相关的里边的和这个location里边的先给它掉,我们先看一下这个效果是啥样的。然后现在这个服务器呢,我们先也先只留一个,这样看起来更客观一点。这个掉全部都蛀掉,然后呢,我们保存,然后重新漏一下。Restart也可以。然后看一下这个101。现在是通过呃,咱们的这个反向代理就能访问到我们这个零二了,没有任何其他的这些多余的配置,我们全都给注掉了,对吧,只有这个反向代理啊。然后接下来呢,我们再压测一下,看看这个结果和刚才的那个呢,我们对比一下。这会儿再发请求就别向着102了,因为我们期望通过这个,呃,101这个反向代理过去对吧,然后来走还是想直接给他打10万啊走。
10:09
嗯,这个结果啊,我们只能去对比去看啊,因为它并不客观,因为我们我现在的这个呃,环境有限,就只有现在这一这一台机器只能自己测自己,那正经来说呢,你应该呃,你如果要有条件的话,呃,你再搞一个这个呃机器就咱们自己做实验,不管是在公司里也好,还是自己在家里学习的时候,哪怕咱们连一下同学朋友的这个电脑,对吧,在他那上面呢,跑这个。呃,服务,然后我们这边去发请求,因为你发请求也是非常占用资源的啊,不光是他处理这10万个请求,你想想你要发出去10万个请求,这是非常非常占资源的,所以这个呃自己测自己呢,我们只能去对比去看啊,然后这个结果肯定并不是真实的啊,只能说是我们对比去看一下它这个速率究竟啥样的,那现在这个结果已经跑出来了,我们看看。
11:01
和刚才这个对比一下,大家看,呃,首先看这几个关键的指标,现现在我们先看这个吞吐量由1925大K对吧,然后现在变成了900多K了。是吧,啊,这都不到一兆了,对吧,我们好歹现在应该不是千兆网卡,也得是个百兆网卡吧,那你现在钱跑到只跑到了一兆,那是因为啥?肯定是因为我们的后台,呃,不是不是我们的这个NG和它的上游服务器之间的交互,这个这个性能效率不够,然后你看这QPS。原来的这个7600,现在降到了3800。对吧,这个性能也是直线下降的是吧,这是通过反应代理服务器,我们没有配置这个keep live,它给我们显示出来的结果来,我们接下来呢,再把它给。呃。抠出来,然后呢,一会儿我们再去对比其他的。这是反向代理之后的这个结果。
12:05
直连和反应代理它能差差的这个吞吐量啊,就是非常非常多,QPS也接近于损耗了一半了,是吧,那我们接下来再测一下这个,呃。N几个代理N几个,然后呢,我们把这live给它给配上,然后咱们再看一下效果啊。嗯,咱们这个这是。把这些注释呢,咱们先给它给打开上边三个啊,然后这是什么,这个连接池是吧,然后这个并发,然后这个是超时。然后把这个版本号和这个。Header也给它清了啊,给它重新设置一下,一会儿我们可以带着大家试一下,你看你不清,你或者说你不设置这个header,它效果是啥样的。来,我们重启一下。
13:00
然后再跑一遍这个测试,现在是开了这个keep live了。来。这也是10万的请求啊。来咱们看啊,这开了live之后,这个效果有没有这个。提升。看一下这个,先看一下这个重要的指标,就这吞吐量,呃,原来是没开的时候九百六是吧,960K,现在变成呃一千一约等于一千四吧,1400K了啊明显又好了那么一奶奶了,对吧,然后看这个QPS呢,从三千八变成了5500。也稍微的有一些提升了是吧,然后再有就是这个像延迟啊,最低延迟呢啊都在这这这个最低延迟呢,是0.18,然后这儿也有这个一些延迟的一些信息,它都明显的要在延迟方面啊,都能明显的去略低于。
14:08
呃,原来的这个咱们没开着keep live,你看max,从max这来看,连接的MAX13,这没啥区别对吧,这边22,这边20了,然后WAIT22这边15了,对吧,然后total啊,然后这22变成了20是吧。以及这个最长的这个性延迟,你看这边有22个,这边有20个。是吧,很明显的有提升,但是这个提升的这个比例啊,肯定也是不对的啊,同学们要记住,并不是说啊,他只能提升,大概现在有20%左右,对吧,相当于从4000变成了5000多是吧,大概有20%左右的提升,这肯定不止是20%,这如果要是在真正的这个物理机上我们去压测的话,他至少要有40%左右的提升,就是提这个增加的这个keep live。是吧,但是啊,如果你要是直连的话,你看效果差距还是比较大,对吧,然后这儿呢啊QPS,这是五千五啊对吧,那这直连的话是7600。
15:08
是吧,响应延迟呢,明显也要低得多,因为它要向后这个上游服务器再去转发请求嘛,对吧,最低响用延迟都要高于这个,呃。我们这个直连是吧,吞吐量也要有,它也有也有所下降,其他的也是啊。当然我们虽然说牺牲了这一部分性能,但明显的能够提高我们这个整体的这个呃,这个这个管理上的这个方式啊,我们有更多的方法去管理我们后端的服务器了啊,同时这个呃也能在这个内网和外网之间呢做好隔离,一般来说我们用NG,用它的反向代理,即使你带来了一台服务器。很多时候其实它也是它也是有意义的,因为这台NG服务器啊这个。或者这个反向代理服务器吧,啊,他只对外网啊,或者说整个集群里边只有他对外网。
16:02
它作为一个跳板机,或者一个反向代理,只有他能够和客户建立连接,那这样就能有效的把我们内网里这些,呃,服务器里边的这些数据资源啊,全部都和外网隔离开。那么我们现在只需要保护好一台机器,也就是把这个我们的这个,嗯。反应代理服务器把它给保护好,那么黑客呢,就不会通过他来入侵到我的这个呃内网的这些呃这这些服务器里了,如果你要没有这个跳板机的话,那么你所有的这个呃服务器呢,都得对外网提供服务,不光是需要很多的IP地址。啊,同时它也变得不安全,你从原来只需要维护一台机器的安全,那变成了维护N多台机器的安全了,对吧?同时对于这个呃负载均衡啊,对于这个一些这个健康检查啊,对于一些呃安全和统一的这种管理上来说呢,我们在前面前置一个呃反应代理服务器,可以把这些原本在每一台机器上需要处理的这些业务给它抽取到NG格上,呃前台前端的这台NG格,这样也能达到结耦的这个目的。
17:12
对吧,学Java的同学大概都知道,对吧,你要解耦不能每一个这个机器上的跑着像特别呃特别冗余的这些逻辑啊,对吧,那我们就可以这么干,那比如说给大家举个例子啊,比如说大家如果要是了解空啊,或者API six。这种这个网关服务器的话啊,他们也都是通过NGS做的扩展开发。啊,它就可以把一些像健全啊一些这个呃,网络防火墙就waf啊,这些通用的这些功能呢,从原本的这些服务器里边全部都给它抽取到呃,它的这个N服务器上,那么我们一点一点的循序渐进的带着大家来慢慢了解对吧?那我们现在呢,测试了NG代理N几格,增加了keep live对吧?那我们接下来再给大家看一个。呃,Tomcat。Tomcad呢?有搞Java的小伙伴都知道对吧?但一般来说大家对它的性能啊都表示并不是特别乐观,那么今天这个测试呢,可能就要颠覆大多数同学的这个认识了,我们来看一下这个Tom cat如果不做反向代理,不做动静分离,那么它的性能究竟是啥样的?
我来说两句