00:00
呃,那同学们接下来啊,我们看一下啊,这keep live如何对上游服务器做配置,也就是我们反向代理服务器,呃,在配置的时候呢,嗯,这个后端的服务器啊,对于我们的NG来说,它叫后端服务器,对吧?对整体来说它是上游服务器。和我们的N之间能不能使用这个keep live,那如果要用keep live的话,那你一定是用N在做反应代理的时候,做的是七层代理,就是他代理的后端服务器是基于HTTP协议的。啊,那在这呢,我们先看一下这个相关的一些配置。啊,在配置的时候呢,有这么几个配置选项,首先在upstream里边,也就是我们的一组服务器里边呢,我们需要配置这么一个东西叫keep live啊,这个keep live的含义是呃,使用的这个连接池里边的连接的呃,这种维持绘画的保持的个数,就像如果你要学过这个,呃。数据库连接池的话啊,比如它里边有一个核心进程数,或者是你学个Java对吧,你那里边儿也有这个很多的线程池对吧?那线程池里边不管是哪种线程池啊,那里边一定有一个这个保留的线程数啊,这就是keep live,这就是保留线程数,它也呃有这个呃LRU算法就是最小使用的时候呢啊,它就会把这个呃线程给它给空闲下来。
01:21
这个是keep live要在这upstream里边配的,然后另外呢,就是呃。这两个参数和我们之前像客户端配的两个参数就很像了,一个是keep live time out,另外一个是keep live request啊这俩是一样的啊,对于呃,我们的浏览器,我们像前端配置的时候,上节课讲对吧,在超时时间和这个每一个建立好的TCP连接,它能够并发这个发起的这个请求个数啊这两这三个参数都是可以在我们的这upstream里边配的。再有就是在pro过程当中,一是在server里啊,还有两个需要配的,一个是我们的HTP的版本号,默认情况下呢,它使用的是1.0版本的呃HTP协议向后端发起请求,并且每次发完请求之后呢,它都会关闭连接,把连接关闭之后再下次再需要发起请求的时候,然后再去开启一个新的连接,我们一旦要是配置了这个keep live之后呢,就可以非常有效的去减少这种连接上的开销啊,每一次连接其实都是很重量级的,它需要建立三次握手啊,这个三次握手呃对比我们传输数据来说,它的呃所消耗的时间其实一点都不短。
02:32
然后呃,在这呢,我们如果把它配置成HTp1.1协议的话,就可以更高效的去使用这个keep live HTp1.1和1.0,在keep live传输的时候呢,它的实践呢,还是有一点区别的,1.1的效率会更高一些啊,另外就是我们需要把嗯。呃,这这还有另外另外一个参数啊,就是process head,呃,默认情况下,它会在我们做反向代理的时候,比如像后端服务器传输请求的时候,假如说这前面这是我们的NG的,呃,核心啊,他在做反向代理,他会把请求中转的上游服务器,他在中转的过程当中呢,会把前端用户请求的HTTP的头啊,基本上都会清除掉。
03:17
啊,也就是我们浏览器,我们现在呢,给大家重新再画一个图啊。假如说这是我们的用户,然后经历了我们的反向代理服务器,比如这是NGS,然后他的上游服务器就是反向代理服务器的后端,比如这边是Tom cat,你这边所带的像一些呃,用户的一些信息,一是在agent IP地址什么,这一切经过NG的转发之后,它都会把它给清除掉。清除,在清除了这些信息之后,再把请求转发到后端服务器啊,后端服务器其实他是不知道真正的用户他是啥啊,他的IP是啥,他也不知道对吧,因为后端Tom cat的不和,呃,这个前端的这个用户直接做交互,他所认识或者他能够连接的就只有这个N几个NG。
04:13
呃,会携带自身的一些信息啊,传递给这个我们的tomca在这head里,那么在这个过程当中呢,那你像呃,我们这个浏览器一般来说和NGS都会建立这个keep live这个长连接啊,浏览器会发送这个请求头在hier里边啊,它上节课咱们讲的对吧,那connection里边它期望是keep alive的,那NG呢,默认情况下它是不支持这个超链接的,所以他要把这个。呃。Connection里边它可以清除掉,并且啊,把它设置成close。这里面它会配置成close。Connection里边,当他被header里边的这个connection被配置成close之后,就很明显的告诉后端服务器,我们不要创链接,我们每一次请求呢,你都给我,呃,重新建立一次连接,那这样的开销呢,啊,就会明显的稍微大那么一点点,对吧?啊这就是呃,我们另外需要配置这个header,我们需要把它这个clothes给它给。
05:16
呃。给它给这个这个清除掉,就是process hater,这个命令是设置NGS向后端或者叫上游服务器在发起HTP请求的时候,它所需要携带的这个header,其中这个connection把它设置为空,因为它默认的值是close啊,或者你把它给改成这keep live啊,或者是给它清空都可以,因为HTV1.1的这种情况下,它默认是支持长连接的。啊,这是它的一些配置,那么接下来我们把这个服务器呢,给它配置一下,我们看一看效果啊。现在还是这几台机器啊,123455啊,我们在这个呃零一上去改。
06:01
然后找到咱们的配置文件。有是local。恩吉克斯。困。呃,在这个配置文件里呢,我们看一下这个文档啊。这里边可以,呃,或者是需要配置的,一共有这么几个,第一个就是keep alive,这是呃连接池的这个线程个数啊,这是在upstream里边配的。我们先暂时把它配置成100啊这个数啊,我们在配置时候。不需要配置的特别大啊,配太大也没有意义,因为它一个连接可以在呃,连接里边的发起N多的请求,就是这个下边这个东西就是keep live request啊,这里边可以发很多请求。当然也有另外一方面解释,就是因为我每一次请求都是啊,这种短请求,或者说这个每一次请求所耗时呢,都非常短啊,你的数据量也不大,所以它在一秒内就能完成N多个请求啊,几千甚至上万个,那一会儿我们给大家做这个压力测试的时候,我们可以看到它的这个并发量,就是QPS究竟有多少。
07:16
这keep live的呢,我们在这给它还是设置成1000。然后这个keep life time out,其实在这儿呢,配置这keep life time out没什么太大的意义啊。其实这个意义就不大了,我们还是65,其实不配的话,它有一个默认值对吧,这就是65,这是在这个upstream,我们的这个服务器列表里边这三个配置。然后我们再看还有需要在这个pass这个位置,就是location server下这个模块下我们需要配置的。就是这个设置一下HTP的版本号。配置成1.1啊,然后这个清除一下它的这个close啊,因为它会N会给我们加上这个close,我们把这个close给它给去掉,然后这样呢,我们就配好了,然后重启一下机器看看。
08:12
嗯,配置有没有什么问题。System CT,然后restart走啊,现在是没有问题的,然后我们看一下效果。19244.101啊,现在hello 0203020302啊,现在呢,我们是其实是看不出来效果的,对吧?啊和之前没啥区别。我们配置这个keep live的主要的目的是啥?大家能想明白吧,就是想要让他在啊。In和上游服务器建立。连接的时候发送请求的时候呢,他们也用这个keep live来提高这个传输效率啊,达到这个连接复用,别请求一次呢,就给我三次握握手,我都已经来过一次了,你还不认识我吗?对吧?啊,多来几次之后呢啊,他就混熟了嘛,混熟之后就没必要这个每次都这么寒暄了。
09:07
所以这个呃能够有效的提高呃这个像上游服务器就是反向代理的这个效率,那么接下来呢,下一节课会带大家做一下压测,真正的去测一下它的这个效率有没有提升,或者说提升了多少,同时呢,我们也能够看出来,我们究竟有没有必要去在呃这个环节去做一些调优的工作啊。
我来说两句