关于apache:Apache进程模型分析

2次阅读

共计 1245 个字符,预计需要花费 4 分钟才能阅读完成。

本文次要介绍以下问题:

1.Apache 工作模式介绍

2.Apache 过程模型剖析

3.Apache 与 Nginx 有什么区别

Apache 是世界上使用最宽泛的 Web 服务器,同时也是一个基于多过程的 Http 服务器。跟 Nginx 相比,Apache 在解决申请的形式是同步阻塞形式,也就是说 Apache 在面对高并发申请时会呈现阻塞。

一、Apache 工作模式

Apache 的运行形式有 prefork、worker、event 三种模式。

1.prefork 这种模式叫做预派生模式,在 Apache 启动的时候,就事后派生了一些子过程,期待客户端连贯。这样做有个益处是能够缩小在运行过程中频繁创立和销毁过程,升高零碎开销。每个派生进去的子过程只有一个线程,再同一时间内只能解决一个申请。这种模式不适宜高并发的利用场景,过程开的太多了,过程之间切换会耗费大量 CPU 工夫;过程太少,大并发量申请会呈现期待的情景。

2.workerworker 模式应用多个子过程,每个子过程有多个线程、因为应用的是线程去解决申请,耗费内存小,适宜高流量的申请,然而如果某个过程呈现问题,那么这个过程下的线程都会呈现问题,即稳定性不是很好。
3.eventevent 模式为了解决 keep-alive 放弃长连贯呈现的一种工作模式,应用 keep-alive 长连贯的时候,某个线程会始终被占用,即便两头没有申请,须要等到超时才会被开释,所以这个时候就呈现了 event 的工作模式。

二、Apache 过程模型剖析

apache 解决申请是同步阻塞形式,所以面对高并发时,apache 没有任何劣势。
每一个申请达到,apache 都会去 fork 一个子过程去解决这个申请,直到这个申请处理完毕。低并发时,这种模式没有什么问题。然而在高并发时,这种模式就成为鸡肋。
高并发时,一个客户端占用一个过程,过程数量有多少,并发解决能力就有多少。然而操作系统能够创立的过程数量是无限的。多过程就会存在过程间的切换问题,而过程间的切换调度势必会造成 CPU 的额定耗费。当过程数量达到成千上万的时候,过程间的切换就占了 CPU 大部分的工夫片,而真正的过程的执行反而占了 CPU 的一小部分,造成系统资源的节约。

三、Apache 与 Nginx 有什么区别

对于 Nginx 过程模型能够看 Nginx 实现高并发的原理剖析这边文章,比照会发现:两者最外围的区别在于 apache 是同步多过程模型,一个连贯对应一个过程,而 nginx 是异步的,多个连贯能够对应一个过程。

Nginx 绝对于 Apache 的长处:

轻量级,同样起 web 服务,比 apache 占用更少的内存及资源抗并发,Nginx 解决申请是异步非阻塞的,而 Apache 则是同步阻塞型的,在高并发下 Nginx 能放弃低资源低消耗高性能高度模块化的设计,编写模块绝对简略社区沉闷,各种高性能模块出品迅速啊

Apache 绝对于 Nginx 的长处:

rewrite,比 Nginx 的 rewrite 弱小模块超多,根本想到的都能够找到 bug 绝对比拟少,比较稳定。Nginx 的 bug 绝对较多

正文完
 0