Apache 工作方式

Apache 工作模式

apache作为现今web服务器用的最广泛也是最稳定的开源服务器软件,其工作模式有许多中,目前主要有两种模式:prefork模式和worker模式

??
? ?prefork模式:

? ??这个多路处理模块(MPM)实现了一个非线程型的、预派生的web服务器,它的工作式类似于Apache 1.3。它适合于没有线程安全库,需要避免线程兼容性问题的系统。它要求将每个请求相互独立的情况下最好的MPM,这样若一个请求出现问题就不会影响到其他请求。

这个MPM具有很强的自我调节能力,只需要很少的配置指令调整。最重要的是将MaxClients设置为一个足够大的数值以处理潜在的请求高峰,同时又不能太大,以致需要使用的内存超出物理内存的大小。

??
?worker模式:

?? ?此多路处理模块(MPM)使网络服务器支持混合的多线程多进程。由于使用线程来处理请求,所以可以处理海量请求,而系统资源的开销小于基于进程的MPM。但是它也使用了多进程,每个进程又有多个线程,以获得基于进程的MPM的稳定性。

控制这个MPM的最重要的指令是,控制每个子进程允许建立的线程数ThreadsPerChild指令,和控制允许建立的总线程数的MaxClients指令。

?
?apache模式的查看和安装:

? ? ?如果apache已经安装,我们可以用 httpd -l ?命令查看当前模式(只可能有一种)

? ?如果找到 prefork.c 则表示当前工作在prefork模式,同理出现worker.c则工作在worker模式。

? ? 如果apache还未安装,我们在编译的时候可以加入 –with-pem=(prefork|worker)选项决定启用什么模式。

? ? ?当然如果你安装过了(笔者模式为prefork) 也可以使用以下命令来切换

mv httpd httpd.prefork?

mv httpd.worker httpd

? ?重启之后,模式就会改变。

?
?不同模式配置:

??针对不通的模式配置文件也是不一样的,他们都是在httpd的默认配置文件httpd.conf中

<IfModule prefork.c>?

StartServers???????????? 5?

MinSpareServers????????5?

MaxSpareServers???? 20?

ServerLimit????????????256?

MaxClients???????????? 256?

MaxRequestsPerChild????4000?

</IfModule>?

#这是prefork的配置文件?

<IfModule worker.c>?

StartServers???????????????? 2?

MaxClients???????????????? 150?

MinSpareThreads???????? 25?

MaxSpareThreads???????? 75?

ThreadsPerChild???????? 25?

MaxRequestsPerChild????0?

</IfModule>?

#这是worker的配置文件

?

?prefork.c模块

prefork MPM 使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接。在大多数平台上,Prefork MPM在效率上要比Worker MPM要高,但是内存使用大得多。prefork的无线程设计在某些情况下将比worker更有优势:他能够使用那些没有处理好线程安全的第三方模块,并 且对于那些线程调试困难的平台而言,他也更容易调试一些。

ServerLimit 20000

StartServers 5

MinSpareServers 5

MaxSpareServers 10

MaxClients 1000

MaxRequestsPerChild 0

? //默认的MaxClient最大是256个线程,假如想配置更大的值,就的加上ServerLimit这个参数。20000是ServerLimit这个参数的最大值。假如需要更大,则必须编译apache,此前都是无需重新编译Apache。

生效前提:必须放在其他指令的前面

免责声明: 本文仅代表作者个人观点,与无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。

相关资料

Apache 工作方式

相关文章:

你感兴趣的文章:

标签云: