00:01
大家好,欢迎大家继续收看上硅谷的Linux预算视频,我是刘川老师。我们上节课呢,讲了一下关于阿帕奇在讲解之前的一些需要了解的一些概念啊,那么这节课开始啊,来讲一下阿帕奇的内容,那阿帕奇第一个内容就需要先来了解一下阿瓦奇的一个概念和概述啊,OK,我们来简单来介绍一下阿瓦奇到底是个什么东西,以及它的由来。拉帕奇呢是目前世界上排名使用量第一的web服务器软件。上注意,它现在是目前排名第一,而且已经持续很多年了,那它可以运行在几乎所有的计算机平台上,也就是说,呃,我们目前已知的这些操作系统,它都可以运行啊。它的跨平台性和安全性还是相对来说,呃,就是很被认可的啊。是目前最流行的web服务器软件之一啊,为什么说之一呢?因为现在我们又有了一个新的web服务器软件叫NG,那我们后后边就会讲这个N一个服务。
01:04
那它呢,快速可靠,并且通过简单的API扩充,可以将per Python PP等解析器编译到服务器中,比如说,呃,我们的阿尔法七可以和per呀,Python PP等解析器结合在一起,既可以解析per的这个脚本语言,也可以解析Python,也可以解析PP的,都可以,那我们的lamp呢,就只是他们的一个组合。模式之一,OK。阿,再一个就是阿坝奇有很多产品啊,然后其中呢,阿帕奇是默认是支持SL的,而且支持虚拟主机的,那阿帕奇呢,是以这种进程为基础结构的,也就说是以进程来进行,呃,用户请求处理的模式那。有一个问题,就是进程比线程消耗的资源更多,所以呢,阿帕奇不是特别适合处理多处理器的这种环境。因此,在一个阿帕奇的外部服务器站点扩容的时候,我们一般不会选择为这个单台服务器增加CPU数量,而是一般会选择增加服务器的数量啊。
02:09
或节点的数量,也就说不增加处理器的数量,而增加服务器的数量。上一台被两台,而不是一台上加俩CPU啊这个。那到目前为止,它是用应用最广泛的,目前占全球60%左右的。这简单的一个概念性的一个介绍啊,再一个就是来简单介绍一下我们的lamp环境当中的一个大体的一个结构啊,之前我们已经看过那个逻辑结构了,就是以及他们那个,呃。软件包的一个关系,但。是这个图和那个不太一样。这个图呢,是给大家画了一下关于N的一个进程启动的一个啊。一个图,OK。首先呢,阿帕奇的一个启动啊,是这样的啊。呃,我们系统先启动启动来,启动起来之后呢,系统有一个叫呃,Rrt的一个进程,那系统有了RT进程之后呢,我们接下来系统再去启动其他进程的时候,其实是由rrt这个进程去启动,也就是说当我们使用service或者说使用阿尔帕奇cpll start启动阿帕奇之后呢,所启动的时候是由这个。
03:17
Rrt进程去启动阿帕奇,那阿帕奇启动之后呢?阿帕奇也分为两种进程,一种是阿帕奇的守护进程。上执行者是root,而其他那些都是阿法奇的子进程,阿法奇的子进程的运行用户啊,是我们所指定的用户。如果你不修改,默认是代啊,如果你改了可能是你指定的,比如说这个地方,我写的就是我们可以使用3W作为阿帕奇的工作进程的这个。啊,一个运行者的身份,啊,运行者的一个身份。他每一个格式是,呃,操作系统的隐匿的进程就是RT进程,调用阿尔法奇的守护进程,阿法奇的守护进程再开启阿尔法奇的工作进程,那阿尔法奇的工作进程再去什么呀?
04:00
处理用户的请求,挨个处理用户的请求。那这个就是我们的一个,呃,阿坝奇的一个工作模式,阿帕奇的工作模式,那这个时候阿坝奇呢,还通过这个配置文件啊,呃,加载了很多不同的模块啊,加载了很多不同。PP的模块等等。OK,那这个时候当有用户请求八零端口访问到服务器上的时候,这个子进程啊,比如说工作进程啊,会对用户的请求进行匹配啊。会对用户的这个匹配,用户的请求是静态还是动态的,那如果是静态请求就是HTML这种请求的话,那服务器直接将对应的HTML的页面返回给用户,用户的浏览器自己就可以解决了。但如果用户请求是动态页面。它的动态页面是解决不了的,为什么动态界面是需要解析器来解析的,那这个时候我们的阿尔法奇就会通过模块找到PP。然后并且告PP说,我这有个PP面,需要你处理一下,然后PP才对页面进行处理。
05:01
然后PP,再把那个要处理的页面处理完之后,阿瓦奇把处理完的页面再交给我们的。然后用户就拿到了,可以通过浏览器所看到一个信息,OK,那这个就是我们的。阿帕奇的一个工作过程,那阿帕奇的一个工作过程?那这个地方。提到了一个动态和静态的概念啊。什么叫动态?什么叫静态?由HT面标签编写的页面,然后呢,里边包含各种资源的信息的这种页面一般我们称之为叫静态页面。然后呢,首先动态页面呢,很多人啊,这个在刚接触我们计算机这种编程概念的时候啊,或者。是不是这种概念的时候啊,他们理解这个动态页面就是动的页面,那如果说我在一个页面上放视频了,放flash了等等的,那它也是,那难道这个页面就是动态页面不是这样的啊,并不是能动的就是动态。
06:00
我们这个地方来鉴定来这个区别和区分静态页面,动态页面的一个很简单的方式,就是看一下我们这个界面需不需要连接数据库,如果这个界面需要连接数据库,则代表这个界面是一个什么。动态界面,如果不需要连接数据库代表这个界面是一个静态界面。这是。我们最简单的一个区分方式啊,区分。这是我们的一个静态页面,一个区别。然后呢,进程的一个系统顺序是守护进程,启动工作进程,然后产生工作线程。这也就是我们那个。这就是我们关于阿帕奇的一个概念,OK,那么接着来讲一下关于阿帕奇的工作模式啊,阿帕奇的目前有三种工作模式,三种MPM工作模式。还称之为叫什么多进程处理模块。多进程处理模块。没有三种多进程处理模式啊。
07:01
然后他们分别是和event。先来说一下比较老的模式啊。阿帕奇在启动之初就先fok,就先启动一些紫禁城。然后等待请求进来啊。为什么要先开启进程呢?因为如果等用户请求进来了,你再去先开启进程的话,那比较浪费时间。所以说我们为了减少这种。就是。创建进程所浪费的时间,我们事先开几个进程放着,一旦有用户进来呢,我们就直接拿这个。开启好了进程去处理,这样就快很多了。为了减少啊。这个频繁创建和销毁进程的开销,那每个子禁程只有一个线程,然后在一个时间点内只能处理一个线程。那优点是成熟稳定,兼容所有新老模块。同时呢,不担心线程安全问题。因为几乎是一对一的处理嘛。
08:00
这个时候它开启子进程之后,一个子进程对应一个用户请求,那如果用户请求多了,那就多开启一些进程。缺点是一个进程。相对于占用了更多的系统资源,消耗了更多内存资源,那。它呢不是特别适合做高并发,也就是说如果说同时访问量并发访问量很大的话,这种模式会很吃力,而且会很浪费资源。是模式,它对应的图呢,就是这个图。当时的自行车,一个自行车处理一个请求。然后呢,可以开启很多紫禁城,OK。模式,再来看第二个模式,叫worker工作模式。它使用了多进程多线程混合模式,就是说同样是创建多个子进程,但是每个子进程所创建的线程数量不是一个,而是这样的。
09:00
是多个字节多个。一个线程来进行处理。所以说它是一种多进程、多线程的混合。他也预先开启了这个几个紫禁城,但是他开启的紫禁城数量要比那个。刷卡模式要少,比如说刷卡模式要开启20个,紫禁城的话,Work模式可能只需要开启三个五个就够了。然后每个紫禁城创建一些线程,然后呢,同时包括一个监听线程,这个就是我。比如说。一个紫禁城开启好多个县城,但是其中有一个县城它不干活,只是用来进行管理其他县城用的。然后呢,每个请求进来之后会被分配到一个线程来进行处理。线程比起进程。更清亮,而且所消耗的资源更少一些,这样呢,我们就可以节省或者减少一些内存消耗,比较适合高并发,但是缺点是由于是一个进程有多个线程。
10:04
当某一个进程里某一个线程出现问题时,可能整个进程都会受到影响。啊,优点是并发大。缺点是安全。可能会有所。那再来说一下我们的event模式,那event模式呢,其实就是类似于worker模式的一种。那最大一种区别的是在于它解决了keep alive场景下这个问题。OK,好了,咱先别往后看,咱先说一下什么叫keep alive。那什么叫化流?在HTP早期,每一个HTP请求。都要求打开一个TCP socket的连接,也就说都要去连接一下我们这个服务器啊,并且呢,使用一次之后就断开这个接地系统,什么意思啊。服务器客户端。
11:00
给我拿一下AHTML这个文件。好嘞,给你。再给我拿一下这个B点贴这个文件好嘞,给你。那这个时候你会发现,如果短时间内。客户端和服务器之间频繁的去,呃去去去什么,索取了不同的文件。这个时候需要。每次都需要重新进行TCP连接,大家都知道TCP连接是不是要经经过握手连接啊?他每次都得重新TP连接,而且可能他们之间间隔的时间都很短。那这个时候大家会发现,会浪费很多时间在握手上。然后会浪费很多时间在T看。什么意思?购物单那。呃,连接一下。一个文件,好嘞,完事关闭。再连接对。再联系,再完毕。会发现他们之间呢,就是就。
12:01
就是怎么说呢,就是。频繁的去创建连接,关闭连接,再重新创建连接,再关闭连接,比如说这个时候会发现,如果说我要出三个文件,会有。三次握手三次握手三次握手。但是当我们这个开启了K6功能之后,就有了这个,呃。什么不一样的地方了,我们看一下啊。当HTP守护运能发现一个响应之后,嗯,理应马上主动关闭对应的一个TP连接,但是呢,当我们设置了keep live time out之后呢,HTP的守护应该会说你先等等,看看浏览器还有没有其他的请求没有过来,也就说看他还没有其他想要的,如果说他刚请求了a.TT这个文件,然后没过几秒,接着又来了一个HTP,呃,又来了一个b.TT的请求,那这个时候我们就不需要重新建立TCP连接了。而是利用上一次还没有断开的TP连接,直接进行数据传输就可以了。
13:02
那这样的话就减少了TCP的一个,呃,连接的次数,连接的次数啊。这就是我们的一个K6的一个功能。使用K65呢可以改善这种状态,即在一次TCP连中可以持续发送多份数据。然后呢,通过K6机制可以减少TP连接的数量,意味着减少了他mate的数量。提高了服务器性能和HTP的一个吞吐量。就是这个意思。但是这种模式呢,也并非没有弊端啊。也并。啥逼等等,就是当我们设置的这个K时间,如果是呃。不是特别合理,或者说有些时候这种嗯。请求他可能就是一这个人放我恋爱夫妻就犯这一次不在乎有第二次了。这个时候可能会造成很多无效的占用。就是可能。张三请求了服务器,就形成一次,然后。等15秒。
14:02
李四请一次等15秒,王五请一次等15秒。都都是全是疑似的,很少有这种一个请求请求好几个文件的,那这个时候会发现有很多无效的占用。配置不当,利物可能会比重复利用带来的损失还更大。所以说这个正确的设置K6的时间啊,就是设置的时间长短,有非常重要的一个作用。好事就是他减少了。重复进行TCP连接的次数,但是坏事就是很有可能就是这个人可能就请求一次,但是你仍然要一直弹下去。这就是关于k live的一个概念,以及它的一个。有序点啊,有点。那event呢?正是解决了K6的这个缺点问题。怕有些这个连接长时间占用着。就连接了一次嘛,对吧,那我们的event这种。
15:00
模型当中呢,它专门有一个线程来解决这种live的,嗯。现场问题,当有真实的请求过来的时候,我们的这个。阿帕奇啊,会干嘛呢?在问的模式下会。把那些呃。仍然建立着TCP连接的请求主动断开,然后让他来处理我们什么,让他来处理我们当前需要处理的请求,什么意思呢?这个。一个人连接了这个线程。三个连接都在timeout的。一个时间内也是都还没有过期,TCP连接都还没有过期,但有一个新的请求线了,这个时候这个请求不知道该给谁了,怎么办呢?这个管理线程会找其中的某一个线程,让它断开和之前的连接。处理新的连接。福利那?这样呢,就。主动释放掉那些。本来。应该持续连接着呢啊。
16:02
然后这样可以增强我们的并发啊,增强。既起到了啊,在资源充足时可以keep live。厦门那些,嗯。多个请求的那种。用户可以有种K6动。又可以保证如果资源不太够的时候。然后呢,主动释放掉来接收更多用户请求中。解决了K6的吗?采用了keep live的方式,减少了TB连接。但由于需要与服务器的。这种线程进程进行绑定。资源的浪费。我们的event模式解决了这种问题。这就是我们。阿帕奇的三种工作。如何知道我们当前的这个服务器,它所使用的这个工作模式是什么呀?
17:04
可以用什么呢?我们可以用这个命令查看啊,用HTP-V。的方式。过滤一下这个叫server m PM的信息就可以了。注意啊,做实验之前利用我们之前的那个LMP环境就行了啊。HTP。弟兄学路径了啊。做个链接吧。杠S跟下user local Apache下的。所有链接到跟下的use lock。下的话HTP可以直接。
18:00
刚开始回来打游戏啊。是server。目前工作模式是模式啊,目前工作。阿帕奇的工作模式的一个。那如何来这个?指令阿尔法七的工作模式呢,这个其实可以在编译的时候来进行一个指令啊,在编译的时候加一个选项叫刚刚V-MPM。边加一个那个电灯宝石就可以了。包event都可以。我们的关于。阿尔法奇的一个概述,以及阿尔法奇的三种工作模式的一个介绍,OK,那么本节课先到这儿,我们下节课再见。
我来说两句