00:01
大家好,欢迎大家继续收看上硅谷的Linux云计算视频,我是刘川老师。那本节课呢,我们来给大家讲一个网络服务方向阿帕奇配置相关的一个面试题,那么首先呢,我们来看一下这个面试要求。面试的题目是这样的,我们公司呢,有一台服务器,那我们需要在服务器上跑两个网站,OK,那首先我们先把题目看到这个地方,OK。在同一个服务器上跑两个网站,很明显这是考察我们阿帕奇当中的什么?虚拟主机的功能,OK,虚拟主机的功能。接着往后看。并且呢,其中的一个网站需要更换新的域名,请问如何处理那?更换新的域名,注意这个地方它是有坑的啊,什么坑呢?所谓的更换新的域名,并不是说旧的不用了,而直接启用新的,这种在我们生产环境中是一定不会出现的,那就根据我的经验,我来告诉大家,生产环境中如果说一个网站一开始有原来的旧域名,后来又换新域名了,那一定是新旧域名同时存在,而不可能旧域名直接不启用。
01:13
当然啊,特殊情况除外,有这种类似的特殊情况啊,绝大多数都是更换域名时,新旧域名都同时用。给大家解释一下,很简单。你啊,一开始啊,这个旧域名啊,一直在这个各种搜索引擎上做推广,做广告,那这个时候你的这个域名呢,已经有了一定知名度,并且已经有了很庞大的用户人群。如果你直接把旧域名取消掉,而启用新域名,那你会发现你原来旧域名所做的推广和之前的用户量基本上都没有了。这个时候你的损失非常大,那我们一般情况下,在生产环境中,为了避免出现这种由于更换域名而导致用户损失的这种情况发生,我们一般新旧域名会同时存在。
02:04
只不过我们会做一个什么呢?只不过我们会做一个旧域名向新域名跳转的这么一种操作。啊,旧域名向新域名跳转,这么操作为什么要跳转啊,我们要让新的用户知道我们的新域名是这个东西,我们要让旧的用户也知道我已经更换了域名了,你们以后可以用这个域名访问,而旧域名慢慢的就会。被淡出人们的视线,OK?那这呢,就是我们的一个题目,那其实啊,大家从题目当中啊,啊分析之后啊,应该能得出来,我们的这个题目呢,所考察的方向呢,其实很多,那就是既有故障解决类,又有服务优化类,又有纯概念类的信息,OK,那其实我们总结起来之后就两点,一个是虚拟主机方向,一个是rewrite方向,那这个地方为什么我提到rewrite方向,而不是域名跳转呢?很简单啊。这个rewrite功能啊,除了在刚才这种情况下出现之外。
03:04
什么再回去看这个题啊,除了一个网站更换网站时有两个域名这种情况下需要之外,Rewrite功能还有第二个地方也需要,比如说大家都知道我们现在的网站绝大多数都是有支付功能的,都是有支付那个模块的那。但凡涉及到支付,就一定得干什么呀,进行加密啊,进行加密,那这个时候你会发现我们的网站都需要加密连接传输,那所使用的我们的协议都是HTTPS。协议了,而不再是原来的HTTP协议了。那对应的有啥区别吗?区别就是HTP用的是八零,而我们的HTS用的是403。啊,443啊443啊,最近这个解决这种403故障代码太多了啊OK 443端口OK。那对应的呢,我们八零跳转43端口的时候。
04:05
就需要用到我们的rewrite。重写功能,那就需要用到我们的软和地址重写功能。算,这也就是我们要考察的我们的阿帕奇相关的,呃,两个知识点,OK,那我们首先来看一下关于虚拟主机的问题。那虚拟主机呢,大家应该都很清楚了啊,这个看我们视频,或者说这个看过我们的这个发的那个细links那个书籍的那个人应该知道,所谓的虚拟主机最终解决的问题就是为了在同一个服务器上部署多个服务器啊,部署多个网站啊这种。实验效果,那这个时候呢,呃,我们实现虚拟主义的方式啊,有三种,但是前两种呢,呃,应用的这个范围啊,以及适用的场景不是特别多,所以这两种不是特别常见啊,但是偶尔有见的,最常用的是基于域名的虚拟主机,那这三个呢,我都来给大家做一个演示啊。
05:03
让大家来梳理一下我们这三个实验啊的对应的一个过程,以及他们的工作原理,OK。首先呢,我们来看一下关于虚虚拟主机的这种基于IP的这种模式。它所谓的基于IP的就是一个网站对应一个IP地址,两个网站对应两个不同的IP地址,那OK,我们先去为我们的这个呃。呃,这个这个训诫准备我们的这个。不同的网卡,OK。首先呢,我们来观察一下,我们这个机器的网卡只有一个IP地址,一个88.20,想让一个机器的网卡有多个IP地址,很简单,就是网卡子接口,我们可以借助一个叫if config的命令,给对应的已存在的网卡设置一个网卡子接口。那子接口的IP地址呢,我们可以设置为88.21。这个时候我们来看一下。我们一个网,我们的这个服务器上就有两个IP,一个88.20,一个是8.21,但是注意啊,使用刚才这条命令设置的这个功能啊是呃。
06:07
临时生效啊,临时生效一旦我们重启网络服务的话,这个IP地址就不存在了,那如果你想让你的服务器上同时存在两张网卡的话,那生产环境中很简单,那就是增加硬件啊,我们一般情况下这个服务器都是模块化的,我们可以购买一个扩展插槽,然后来扩展一下我们服务器上的。网卡接口数量。如果是虚拟环境,比如说我们现在用的VM虚拟机,那也很简单,把虚拟机停掉,然后呢去设置虚拟机。在设置里边新增一个什么网卡设备啊。添加一个新的网卡设备就可以了,但注意啊,一定要关机再添加,而且添加完成之后呢,还要在里边自己新建配置文件,毕竟。操作系统在安装的时候,你只有一个网卡。你这个新的网卡是后来加的,那配置文件我不可能提前就帮你创建好了,肯定是你新加了网卡设备,我没法帮你添加配置文件,你自己添加配置文件,OK,那个呢,比较复杂,咱不说了,由于咱这个是啊,那些东西大家也都了解对应的原理,我就用这种比较呃方便的简便方式来给大家做这个实验,OK。
07:19
IP地址准备好了,那我们再去准备域名,那对应的域名呢,大家像刚才应该应该看到了啊。我们的域名分别是A和B 3W和3WB,那我们就拿着这两个域名来和ipg的做个映射关系,同样为了实验方便,我们也不去搭建。DNS服务了,我们就借助它的啊,相同功能的那个工具啊,Hosts文件来完成这个事儿,192.16。八点。88.20对应的是3wa.com。而我们的二幺对应的是b.com OK。
08:00
配置文件修改成保存就可以了,这个配置文件不需要去重新加载之类的,它已经生效了,那验证方法呢,就是用PIN的方式PIN一下我们的a.com。是20P项目的。Come。是二幺啊,没有问题了。好了,接下来我们去安装我们的阿帕奇的这个软件,并且呢,去修改对应的配置文件,OK。大家一定要注意啊。呃,生产环境中我们啊,一定得做到操作严谨啊,我在之前工作的时候就经常碰到过有同事啊,由于啊这个去操作线上服务器,由于没有做任何备份导致呢,由于修改之后修改错误而导致这个服务宕机啊。经常出现这样问题,那怎么保证这个问题不出现呢?很简单,你每次再去操作之前啊,你把对应的那个原始的配置文件啊,给它做一个备份,万一出现故障,恢复到原始状态,它还可以运行。像等你把你遇到故障解决之后,再去用最新的去这个运行就可以了,比如说我们这个地方只有一个配置文件,我们可以先来给配置文件做个备份啊,CP下我们的htp com文件,给他做一个叫。
09:12
Back的文件,这样的话我们就有一个备份文件了,当我们修改htp DR com出现问题时,我们可以拿back文件恢复一下。那我们现在来打开我们的配置文件,在里边呢。注意。切换到文件的最尾部,我们这个地方是有模板的。我们看到了一个以v host为标签的这么一个模板,那这就是我们的虚拟主机的功能了。像这就是我们虚拟主机的功能。我们直接呢,利用这个模板来进行配置就可以了,比如说我们呢,这个复制一下模板。TYY。然后呢,把不必要的删除掉,比如说我们的日志这个不要了,比如说我们的这个管理员信息也不要了,OK,留下最后四行,哎,和我们的这个基于IP的这个地方的模板是一样的,那OK呢,我们在标签的标签里边声明个不同的IP地址已作为两个网站的绑定IPOK,正好我们有20221,那我们先把其中一个搞定,再来复制一下。
10:22
192.168.88.20作为其中一个网站,那对应它的网站的网页文件可以存放在V下3W下的HTML目录下,我们可以叫a.com目录。然后呢,对应的域名呢,叫3w.a.com。那拿着这个模板再来复制一个。4YY。P一下,OK,两个模板都有了,那第二个模板里边对应的IP地址是二幺,而对应的这个网页目录是b.com,以及对应的域名是3W b.com,那这样呢,我们就形成了两个不同的什么网站的信息,用两个不同的虚拟主机标签来声明。
11:09
注意保存退出,那这个时候能重启阿帕奇吗?注意,千万不可以,因为我们还没有为两个网站创建网页目录以及网页文件。CD切换到Y下、3W下HTML目录下之后,我们在这个地方分别make d创建a.com和。b.com2个目录。然后分别往两个目录里边创建文件。其中一个我们可以。啊,叫什么。3w.a点啊。然后呢,把这个信息。然后把这个信息写入到我们的这个a.com目录下的index.html文件里边。那其次呢,我们可以搞一个。这个B目录下的一个index文件,但是里边内容要改一下啊,内容要改一下。
12:10
两个不同的网页目录都有了,并且两个目录下有各自的网页文件,网页内容也不一样啊。这样呢,我们才能够在进行测试的时候,测试到我们想要的结果,OK,那至此呢,我们的这个,呃。基于IP的就是。不同的域名绑定不同IP的这种。虚拟主机模式我们就已经搞定了,我们重启一下我们的阿尔法七。Service httpd。Start。重启之后呢,我们来测试一下,测试的方式很简单啊,我们有一个命令叫C。URL的命令可以直接用它用。这个指定域名的方式来访问对应的信息。比如说我们访问A。看A的网站的信息,那访问B就看到。B的网站的信息。我们的基于IP的这种虚拟主机的实验就操作完成了。
13:05
那基于IP的完成之后呢,我们再来看第二种。第二种呢,叫基于IP和端口的。主机,那这个地方所谓的基于IP端口啊,指的是端口不一样,但是IP地址一样,指的是我们两个或者是更多个不同的网站使用同一个IP,但是使用不同的端口来进行区别不同的。这种。虚拟主机啊,在生产环境中啊,其实还是能够见得到的,我们有些时候在访问某些特殊的网站的时候,你会发现它的网站啊。不是只输完了域名就可以,而是需要输完域名之后,在域名的结尾处写一个对应的一个端口,比如说我们常见的有什么3w.a.com冒号的8080这种。偶尔会见到还有什么9000的这种啊。都是有的,所以说呢,呃,这种基于IP和端口的这种,实际上是通过端口来进行一个网站的区分,那这个呢,我也给大家演示一下,我们就利用现在已经搭建好的这个环境,我们去做一下修改。
14:14
呃,至于我们这个修改哪些方向呢,很简单,他们。既然是使用端口来区分了,那IP地址就得一样,那首先就得去修改hosts文件。把对应的两个域名的解析IP都解析成二零,而我们那个IP的子端口是不是也没有用了,所以说我们这个时候就可以重启一下我们的。网卡服务把。一个。网卡的子接口的那个21IP地址取消掉了,OK,我们再来看一下。就剩二零了,没有问题了。那其次呢,我们需要去修改一下关于阿帕奇的配置文件里边的信息。那同样。虚拟主机标签里边所绑定的IP地址都要绑定成二零,只不过绑定的端口一个是八零,一个是八零,八零。
15:06
别着急,这个地方没有完,为什么呢?大家都知道,我们的每一个服务,在对外提供这种接收请求的时候,他都会什么呢?它都会有一个监听端口。我们的阿帕奇默认监听的端口,我们来查看一下啊。啊,查一下listen,他会发现这个地方listen listen对象是八零,但是他并没有监听八零,八零。阿帕奇不监听8080,下边儿你说如果有有访问8080的我怎么样?你都不监听,人家怎么可能会?对不对,接收你这个8080形成的,所以说这个地方下边除了增加8080之外,这个地方还要去在这个地方添加一个关于什么呢?Listen的一个新的一个,呃。这样的一个一个设置,让我们的阿帕奇既监听八零,又监听八零,八零监听两个端口,OK。
16:01
所以说我们来增加一个新的监听。这个地方也搞定之后,下边这个新增的这个8080才是生效了的,否则你只修改了下边这个有一个8080端口,而上边不监听的话,是没有任何意义的啊OK。我们修改完所有的设置之后呢,我们保存退出一下,重启一下我们的HTD服务。OK,重启排压我的服务之后呢,我们来进行一个测试,同样还是用curl来测试3WA点。而b.com看我直接访问啊,看点直接访问,这个时候访问的结果是不对的,它访问的是A的信息,那我们如果用B的。8080来访问看结果就是没有问题的,所以说这个地方呢,我们是通过不同的端口来区分了我们的两个不同的网站,这就是所谓的基于什么基于。
17:05
端口的IP和端口结合的这种虚拟主机。这就是我们的虚拟主机的前两种,只不过这两种不是特别常用啊。大家简单梳理一下过程就好了。它重点呢,我们来说一下关于基于域名的虚拟主机,所谓的基于域名呢,就是我们基于用户在进行访问服务器时所使用的数据包里边那个关键词来进行匹配。OK,这是客户端,这是阿帕奇服务器。用户的请求发送到服务器上之后,服务器会对用户发过来的数据包进行拆分,拆分数据包的过程会看到用户想访问的是哪个域名。是3WA呀,还是3WB呀,如果是A,就把A这个用户的请求指向A网站,如果是B,就指向B网站,这就是我们的这种基于域名的虚拟主机的一种工作原理。
18:01
那我们接下来呢,去看一下对应的实验,这个实验啊,我已经给大家准备好了,我们只需要看一下对应的配置文件和效果就可以了。OK,那我们去看一下对应的这个实验,首先我们退出我们这个主机,我们来登录,登录一下我们的88.10这个机器,OK。好了,登录到88.10这个机器上之后呢,我们上面由于是已经配置好了的,所以说我们直接啊去看对应的配置文件和效果就可以了,那首先需要看的就是关于它的host文件,OK。大家发现啊,这个后四文件里边啊,写了三个解析,都是85.10,分别解析成了ABC3个网站啊ABD3个网站。那嗯,其实呢,A已经没有多大用处了,我们要做的是让B和D做新旧域名的一个更替以及跳转,OK,但是我们都要做解析啊,都做解析,这是这个,其次呢,我们来看一下阿帕奇的配置文件。
19:09
阿帕奇的配置文件呢,相对较复杂,但是呢,除了这一段之外,我们先把这一段。划掉,别看这一段啊。除了这一段之外呢,大家会发现呢,其实一样的都是virtual host80诶。A网站。A的信息啊,80B网站B的域名,哎,然后。B网站,但是用的是B的网站目录。由于由于B网站和D网站是同一个网站,所以说它的网页目录是一样的,这是注要注意的。当然除此之外还有一个要注意,那就是。这个时候呢,我们上面有一个叫name virtual host开关,这个是专门在使用基于域名的虚拟主机时所需要开启的一个开关,这个开关如果你不开基于域名的虚拟主机就会有一些警告和报错,所以这个地方一定要记得开启,那一定要记得开启。
20:07
好了,那我们这个地方基于这种。呃,域名的虚拟主机已经做完了,结果我就不验证了,为什么我们刚才已经看过那两种了,这种我们就不用看了,我们只需要来看一下怎么来跳转。这个时候大家会发现啊,我的目的是让当有用户访问B网站时,跳转到B网站上。啊,OK,那这个时候呢,我们就在这个B的虚拟主机里边,用f mode选项来调用了一个rewrite的模块。啊,调用了一个rewrite模块。然后呢,首先呢开启模块,其次下边是两个指令,第一条指令呢,是做一个赋值,将3W b.com。赋值给http host,当然这个其实并不是必须的,下面这个write ruler这个跳转规则才是重要的,那它跳转规则是不论访问的是3WB网站的。
21:02
什么内容点星大家都应该知道,点星在我们的正则表达式里边,代表任意字符串,任意长度的任意字符串。所以说呢,这个时候当我们。匹配到用户访问的是3WB网站的时候,不管访问的是什么内容,都跳转到3WD网站,都跳转到3WD网站,并且呢,还去访问对应想要访问的内容。OK,这也就是我们这个信息。好了,我们啊,先把这个东西啊放到这儿,然后呢,我们去看一下关于这三条信息,它的详细的功能是什么样的,OK,那么来回到我们的PPT上。看一下我们这个界面。OK,我们来看一下我们这个地方的一个功能,OK。
22:03
首先呢,标签的功能是这样的,标签的作用是为了调用我们的rewrite这个模块以实现呢。启用我们这个跳转功能。对于阿帕奇这个工具来说呀,它呢,由于时间比较长,它把很多的功能都集成了一个一个的小模块,然后呢,分成了一个一的这样的功能在外边。当你想使用某一个功能的时候,很简单,只需要去调用它就可以了,而不需要在它的配置文件里边直接写对应很复杂的代码。所以说你会发现阿帕奇的配置其实非常简单,因为他把所有的功能都模块化了,OK。那其次呢,是第二个。第二个呢是关于开启开关,即便是你调用了模块,如果你不开启这个功能的话,也是没有用的,OK,那。第三个呢,是关于我们的这个跳转的一个命令,那或者说一个赋值的命令,那如果检测到用户访问的这个呃,关键词是3W b.com的话,那这个时候我们会将这个对应的关键词赋值给HP host,或者说我们检查HP host是3WB的话,我们才执行对应的ruler对应的规则,那规则呢,就是不管你访问3WB这个网址的什么内容,点星就是任意内容,任意长度的任意字符。
23:27
然后都跳转到3wd.com这个网址上,并且DOLLAR1所取的就是点星的内容,比如说不管你访问的是3WB的什么内容,同样在访问3WD的时候访问同样的内容。这个DOLLAR1指的是一个位置参数变量,取的是点星的内容,OK,然后呢,后边有个叫R等于什么信息,那这个地方我给大家简单解释一下啊。这个R等于的信息也经常写成R等于301,我们一般称之为叫做永久重零项,这个永久重零项它的主要作用是为了什么呢?为了迎合那些搜索引擎啊,为了迎合那些搜索引擎什么意思呢?就是搜索引擎这个东西啊,它就类似于是一个什么一个一个一个动物,他会去爬取啊我们的这个网络资源,并且记录到他的这个信息当中,那当有人从它里边检索的时候,他会把自己爬取记录的信息反馈给别人,那一开始啊,这个搜索引擎肯定记的是我们3wb.com这个网址,但后来啊,我用301给它重像之后对应的这个。
24:37
这个搜索引擎就会去修改他之前记录了3WB的那些信息,都修改成什么呢?都修改成3WD的信息,也就是说他会做一个这样的替换,那这个时候你会发现我们所有的这种呃,信息都得到了一个重零项,那也就没有问题了,那就没有问题了,资源还是我们原来的资源,那资源还是我们原来的资源。
25:00
那再一个就是L指的是该规则为最后一条规则啊,以后的不再生效,比如说。跳转规则到此结束,OK,那再一个就是我们的模块结尾的这么一个地方好了。这就是关于我们的。阿帕奇的这种,呃,虚拟主机和我们的rewrite规则跳转的一些信息了,OK,那接下来我们来看一下一个类似的面试题,这个类似的面试题呢,属于一个纯概念类的要求呢,我们来描述一下关于阿帕奇的三种工作模式啊三种工作模式,那这个地方呢,我用三个图来给大家讲解一下关于阿帕奇的工作模式,那正好也帮助大家去梳理一下,如果。面试过程中遇到了问阿帕奇工作模式的时候,应该怎么来回答啊?应该有哪些侧重点,OK?首先我们来看第一个,第一个呢,叫做阿帕奇的pre FOX模式,这也是阿帕奇最早的一种模式啊,最早的一种模式。
26:00
像关于pro模式呢,它的工作方式其实很简单,大家会看到啊。它会开启一些子进程,然后每一个子进程对应一个线程,然后呢,用来进行对用户的请求进行处理。啊,请求进行一个处理,这就是。阿帕奇的模式的工作方式,那事先开启紫禁城,那这个地方提到了一个事先。为什么要事先开启呢?大家都知道啊。如果你在这等着。啊,一个进程都不开启,当有用户过来之后,你需要现充,就是需要呃。需要干什么?需要事先需要现开启,现开启就是需要这个立马把这个进程起来,然后再去找一个子进程处理,这个时候你会发现启动进程的过程是一个消耗时间的过程,那对于用户来说,它的体验度就不太好,或者说用户感觉你这个就比较慢,那最好的方式就是我事先已经把这些用于干活的人请来放这儿了,当有人过来之后,立马就可以上手干活。
27:05
那这就是事先开启进程的一个好处啊,OK。作为一种。老的,或者说作为一种比较早的一种工作模式,它的特点就是特别成熟、稳定,一个子进程只对应一个线程,而一个线程只处理一个。请求。啊,一个请求,这是单对单的模式,一对一的模式,也就是说在同一时间内。如果这个请求没有完成,这个线程就只针对他负责,不会再对另外一个用户请求的处理进行操作了,OK。那这是他的一种啊。模式,OK。那这个时候大家来想一下这种模式的优缺点。啊,这种模式的优缺点是吗?它的优点在于稳定啊。每一个紫禁城只对应一个线程,而一个线程只处理一个用户的请求。这个时候这个用户是独占这个线程资源,独占这个进程资源的,会发现这个时候我们的这个用户请求非常稳定。
28:05
出现问题的几率非常小,但同样由于用户的请求独占了整个线程,这一个线程独占了整个进程的资源,你会发现我们需要开启大量的进程。我们需要每来一个用户去开一个线程,每来一个用户去开启一个线程,而对应的一个线程对应一个进程,我发现进程数量非常多。而这个时候大量的建立紫禁城会大量消耗系统资源。你会发现。我们的这种pre模式对资源的消耗非常大,而对应的也就意味着它不是特别适合,不是特别适合擅长这种什么高并发就是。多用户量的并发请求,这种情况他不是特别适合。他不是特别适合。下这个呢,其实就是pre模式的一个特征,那描述过程就是描述啊,单进程单线程处理一个用户请求。
29:01
安全稳定啊。而且不会由于其他线程的故障导致我们这个进程出现故障,因为它是一对一的,其次就是它的优点缺点了,优点就是成熟稳定,缺点就是什么一个进程独占资源,消耗资源较多。不适合处理高并发请求。OK,这是我们的模式的一个特征。那其次我们再来看一下我们的第二种模式,叫做worker模式。对于worker模式这种模式来说呢,是一种比我们的pre模式更适合处理这种。高并发请求的那种模式,他呢改变了策略,那就是原来是一个紫禁城啊。对应一个线程,现在是一个紫禁程啊,对应多个线程模式,就这样,一个子禁可以有多个线程,而每个线程处理一个用户的请求。啊,你可以理解为就是阿帕奇开启了一个紫禁城,可以处理多个用户的请求。
30:00
同样,阿帕七在启动之后会预先开启一些紫禁城,只不过现在预先开启紫禁城的数量就不用像模式那样多了,因为我们现在的紫禁城是一对多的模式,而之前是一对一的模式,所以说如果原来开启紫禁城开启十个,那现在可能开启俩。就够了。因为每一个紫禁城可以开启很多个线程,然后由线程来对用户的信息进行处理。在这个时候,由于多个线程处理不同用户的请求,并且多个线程共用同一个子进程的资源,你会发现这个时候它的资源利用率提高上去了啊,资源利用率提高上去了。当资源利用率提高上去之后。它所。这个产生的结果就是同配置下,Work模式要比pre模式的并发能力要强一些,要强一些。但是注意。我们一直说的都是关于worker模式的优点,它和pro模式对比而的优点,但是它有缺点,缺点在于由于一个子进程对应多个线程,那万一某一个子进程当中某一个线程遭到了。
31:16
破坏啊,遭到了这种什么入侵,那很有可能整个紫禁城都会出现问题,那整个紫禁城都出现问题了,是不是所有县城都会出现问题啊?所以说会出现这种线程安全问题。会出现这种线程安全问题,OK,那这是worker模式的工作特征以及它的优缺点,OK。那我们再来说一下我们第三种模式。大家会发现第三种模式叫做event,并且第三种模式的前边前半部分和work模式是一模一样的,没错。Event模式其实就是worker模式的升级版,那为什么要升级?首先我们说。我们的worker模式啊,其中啊。
32:03
除了单。进程对应多线程之外,它还有另外一个功能,那就是它多了一个叫keep alive的功能。Alive。这个keep alive功能的作用是什么呢?作用很简单,大家来想一下啊,大家想一下。我现在有A用户。B用户。用户。当A用户来访问我们的网站时,连接了阿帕奇的一个子进程当中的某一线程来处理。这个用户一开始点开了一个网页,啪在浏览,浏览了没有三秒,啪又点击了第二页面,没浏览了没有五秒,啪又点击了第三个页面,这个时候你会发现同一个用户很有可能会什么对服务器发起多次请求。注意是多次请求。根据我们的常识。我们的多次请求,如果每次都需要建立新的TCP连接时,也就意味着每次都需要重新三次握手。
33:09
那每次都需要重新上次分手,那这个时候呢,我们这个线程就会出现频繁的和某一个客户端重新建连接,诶建立连接销毁连接,建立连接销毁连接,建立连接销毁连接。就会出现频繁建立销毁连接的这种情况,这个时候会出现什么问题呢?额外消耗了系统资源,我们的服务器系统资源消耗的会。很巨大,那这个时候呢是不必要的,怎么解决这种问题呢?很简单。既然诶你这个A用户每隔一小会儿就访问一次,那我就把咱俩的连接时长设置的稍微长点,你不是隔了三秒钟,隔了五秒钟都点击了吗?那我就设置咱俩。处理完你的请求之后,仍然连接多长时间,比如说。在A用户点击了我们的页面之后,咱俩仍然连接十秒钟。
34:01
那也就意味着我请求了一个页面,虽然我已经处理完了,但是咱俩仍然连着。在这十秒钟之内,如果A用户再次对服务器发起页面请求,那就不需要建立新的。这种三四握手了,而只需要把A请求的页面发过来就可以处理了,这个时候你会发现在一定时间段内减少了客户端和服务器端之间TCP握手的次数,那这样就节省了大量系统资源。而省了资源就相当于可以。处理更多用户的请求了。就是keep的功能。但是。也有问题。那就是。B用户和C用户。都是只点了一下,然后就都不点了,那也就意味着这两个是不是都得等十秒才会断开啊,那你想想,如果这个时候我们所有的线程都正在处理着任务。而有一部分呢,是处理完了,正在。
35:02
经历了十秒过程。然而没有任何闲置的进程,但是已经有新的用户请求进来了,那请问这个新的用户谁来处理?你会发现我们现在已经没有额外的资源和额外的线程来处理用户信息了,但实际上呢,我们是有一部分线程啊,是已经处理完了,只是还等着说,哎,您是不是还要再点一下,是经历的这个等待的过程。那这个时候你会发现这段时间也是在浪费。虽然。我们通过上面这种K拉模式,节省了一部分频繁点击网站的这种人的资源,但是我们也相当于浪费了另外一部分资源,那怎么办呢?我们基于出现的新的问题,我们新增了一种新的线程,这种线程叫做分配管理线程。这个线程的功能很简单,它。不干这种用户请求处理的事。他只干什么呢?他只干用户和线程连接的工作的分配的这种任务。
36:05
比如说他发现啊,我们所有的线程都已经正在工作着,但是呢,也来了新的用户请求,这个时候我们的分配管理行程就会去找我们那些线程中已经处理完任务的,但是处于这个等待断开过程中的线程,然后要求他们主动断开,并且和新的用户请求建立连接以来,以此来处理我们的新的用户请求。Event模式就是新增了一种管理线程的模式,所以说它是我们worker模式的升级版,比worker模式要什么更节省资源,让。更节省资源,OK。那对比发现,你会发现我们的这个event模式在这种啊。高并发问题的处理上要更擅长一些,它比worker模式更擅长一些,OK。这就是关于我们的这阿帕奇的三个工作模式啊,三个工作模式,那最后呢,我给大家讲两个点,第一个就是关于如何查看阿帕奇的工作模式,我们可以通过HTTP杠大V的选项,然后用grape来过滤serve a server m PM这个关键词,这个地方用杠小I指的是忽略大小写啊,因为我不太。
37:20
记得这个,呃,关于server m PM到底是大家写了啊。过滤掉这个忽略掉之后就可以看到,那就可以看到阿帕奇的当前工作模式,那你就说我当光知道当前工作模式,如果说我想这个,呃,修改功能模式怎么办呢?嗯,如果是源码的,可以直接在编译的时候用刚刚V-MPM的方式来指令模式那。你安装之后,它的公共。模式就是指定的工作模式了。这个呢,就是关于我们整个的。阿帕奇的。一个面试题的一个内容的讲解,那我给大家讲解了我们的阿帕奇的虚拟主机,以及它的域名,以及它的这种地址重写功能,然后又讲了我们的阿帕奇的三种工作模式,OK。
38:08
那希望这套面试题呢能够,呃。呃,大家去面试我们的这个。阿尔法奇相关的题目的时候,能有一个相应的一个帮助,OK。同样呢,我们阿帕奇的一些实验的详细的配置啊,我们在我们的这个。上硅谷的这个。放到线上的这个所有的公开视频里边都有讲解,都有配套的视频和文档啊。这个有需要的可以关注我们的公众号,回复Linux来获取我们的视频资源,OK。那我们的本节课就讲到这里了,我们下节课再见。
我来说两句