下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

网络基础知识Apache服务器软件的工作方式

作者:课课家教育     来源: http://www.kokojia.com点击数:872发布时间: 2016-08-22 16:00:55

标签: Apache服务器web服务器考试认证

软考,您想通过吗?一次通过才是硬道理

  在web服务器中或者你会经常使用到IIS,其实服务器软件有多种多样,比如有文件服务器文件服务器-如Novell的NETWare,数据库服务器-如Oracle数据库服务器,MySQL,PostgreSQL,MicrosoftSQLServer等,邮件服务器-Sendmail,Postfix,Qmail,MicrosoftExchange,LotusDomino等这些都是不同的服务器,相信这样给大家提升了知识面吧!而今天我们要给大家介绍的是网页服务器-Apache,给大家说说它的工作方式是怎样的!对这个网页服务器有兴趣的朋友们可以仔细的看看!

  也许你不知道Apache是一个非常成熟的Web服务器,它的工作模式也在不断优化,Apache现在已经有了3个核心工作模式,我们一起来看看他们各自的工作方式是什么样的,相信这样会对web服务器有更好的一个理解。

网络基础知识Apache服务器软件的工作方式_Apache服务器_web服务器_考试认证_课课家

  第一种模式:基本的preforkMPM,多进程工作模式

  它的第一种工作模式就是预生成主进程,完成基础的初始化工作,然后通过fork预先产生一批的子进程(子进程会复制父进程的内存空间,不需要再做基础的初始化工作),然后等待服务,为什么会预先生成,这样是为了减少频繁创建和销毁进程的开销,这也是为了节约时间成本啊

  拥有多进程的好处是什么呢?好处首先就是进程之间的内存数据不会相互干扰,那么同时的话,如果是某个进程异常终止也不会影响其他进程。但是从内存方面来说的话,每个子进程就因此而占用了很多的内存,因为子进程的内存数据是复制父进程的,所以占用内存也是存在的。

  这种模式的话将会有大量的“重复数据”被放在内存中。那么最终导致出现的结果就是我们能够生成的子进程最大数量是很有限的,在面对高并发的时候,因为有很多的Keep-alive的长连接,将这些子进程“霸占”住,因此将会很有可能导致可用子进程耗尽。所以的话prefork它并不太适合高并发场景的使用!

  第二种模式:加入了workerMPM,多进程和多线程的混合模式

  Apache它是使用了多进程和多线程的这样的一个混合模式,那么它也预先fork了几个子进程数量是比较少的,然后每个子进程创建一些线程,这样一来每个请求过来,这样就会被分配到1个线程来服务,这种方法就是线程共享父进程的内存空间,这样一来的话内存的占用会减少一些,那么在高并发的场景下,比起prefork将会更加的节省内存!

  虽然是节省了内存,但是在本质上它并没有解决Keep-alive的长连接“霸占”线程的问题,实际上还是对象变成了比较轻量的线程,使用进程和线程混合模式,因为要考虑稳定性,当一个线程瘫痪了,会导致同一个进程下其他子线程都挂了,如果说全部采用多线程,当某个线程挂掉,那么这样就会影响整个Apache服务。

  但是线程共享父进程的内存空间,虽然是减少了内存的占用,却又引起了新的问题,那就是“线程安全”,多个线程修改共享资源导致的“竞争行为”,所以在一定程度上增加Web服务器的不稳定性!

服务器架设

  第三种模式:eventMPM,多进程和多线程的混合模式,并且是引入Epoll

  这是比较新的一种模式,在2.4版本以后就已经是比较稳定的一种模式,这种模式是和worker模式很像,那么它最大的区别在于,它解决了keep-alive场景下,长期被占用的线程造成资源浪费的一个问题。

  在eventMPM中,会有一个专门的线程来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放,它减少了“占据”连接而又不让资源的一个浪费,增强了高并发场景下的数据请求能力。因为减少了“闲等”的线程,线程的数量减少,在一些同样的场景下面,内存也就相对减少了很多!

  总结:从上面的分析来看,三种模式在Apache真实应用场景中,eventMPM是最节约内存的,因此也是最常用的一种模式!虽然你并不是专业的研究这个方面,但是在web方面的知识中也会有一定的提高,掌握好Apache的基础在软考网络网络工程师中也会有优势!

赞(19)
踩(4)
分享到:
推荐查看
华为认证网络工程师 HCIE直播课视频教程