当前位置: > Linux服务器 > apache >

理解apache的工作模式

时间:2014-07-05 14:00来源:linux.it.net.cn 作者:IT网

最近看到一个面试题,问apache工作模式,天可怜见,笔者我以前是真没注意过这个,汗颜路过。
    所以在网上找了很多资料,就是对我们都很习惯的,剔除那些糟粕的一个过程,整理了一下,奇怪的是我在apache官网的FAQ上没有搜索到相关的问题。

    默认的rpm包安装时apache默认使用的是Prefork的模式,

    prefork模式通俗点说就是一个多进程单线程模式,一个进程只含有一个线程,它的缺点就是相对work模式非常占用内存,在流量非常大的服务器上可能会使用work模式,当然笔者认为这主要根据公司实际情况来看了,如果这个公司不是很缺钱访问量中等采用这个prefork完全可以,毕竟work那种模式的第三方模块的安全性能还不够好,这个仁者见仁,智者见智。

    prefork下默认maxclients为256,如果要加大(一般我觉得都是要加大的)就要加上Serverlimit的限制:
    ServerLimit最大200000 。

    work模式就是多进程多线程,一个进程可以包含多个线程,而每个进程下的线程是共享内存的,缺点就是一个线程崩溃的话连带这个进程下的所有线程都会崩溃掉。
    在这个work里边,threadlimit 默认为64,最大20000,如果你的环境中64个thread不能满足要求的话,就必须要加大,要用threadlimit来声明了,注意MaxClients必须是ThreadsPerChild的整数倍。

贴一个我的prefork的设置和work的设置
prefork 例:
 

复制代码代码如下:
StartServers 10
 MinSpareServers 10 
 MaxSpareServers 15
 ServerLimit 2000
 MaxClients 1000
 MaxRequestsPerChild 10000

work 例:
 

复制代码代码如下:
StartServers 3 
MaxClients 2000 
 ServerLimit 25 
 MinSpareThreads 50
 MaxSpareThreads 200 
 ThreadLimit 200 
 ThreadsPerChild 100
 MaxRequestsPerChild 0 
 #####最大活跃进程数=2000/100=20<=25
(责任编辑:IT)
------分隔线----------------------------