深入理解apahce的工作模式perfork、worker

 更新时间:2013年06月12日 22:44:24   作者:  
本文介绍下,apache的两种工作模式perfork与worker,就它们的区别进行深入分析,供大家学习参考
prefork模式使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接。在大多数平台上,Prefork MPM在效率上要比Worker MPM要高,但是内存使用大得多。prefork的无线程设计在某些情况下将比worker更有优势:它可以使用那些没有处理好线程安全的第三方模块,并 且对于那些线程调试困难的平台而言,它也更容易调试一些。

worker模式使用多个子进程,每个子进程有多个线程。每个线程在某个确定的时间只能维持一个连接。通常来说,在一个高流量的HTTP服务器 上,Worker MPM是个比较好的选择,因为Worker MPM的内存使用比Prefork MPM要低得多。但worker MPM也由不完善的地方,如果一个线程崩溃,整个进程就会连同其所有线程一起”死掉”.由于线程共享内存空间,所以一个程序在运行时必须被系统识别为”每 个线程都是安全的”。

prefork方式速度要稍高于worker,然而它需要的cpu和memory资源也稍多于woker。

查看现使用的工作模式:
apachectl -l

两种模式配置文件+说明:
perfork模式:

复制代码 代码如下:

<IfModule mpm_prefork_module>
ServerLimit 2000
#连接数大于256需设置此项。20000是ServerLimit这个参数的最大值
StartServers 5
#初始化时建立的子进程数。prefork默认为5
MinSpareServers 10
#最小的空闲进程数
MaxSpareServers 15
#最大的空闲进程数
MaxClients 1000
#最大并发客户端连接数上限
MaxRequestsPerChild 10000
#控制服务器杀死旧进程产生新进程的频率
#将MaxRequestsPerChild设置成非零值有两个好处:
#1.可以防止(偶然的)内存泄漏无限进行,从而耗尽内存。
#2.给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。
</IfModule>


worker模式:

复制代码 代码如下:

<IfModule mpm_worker_module>
StartServers 3
#初始化时建立的子进程数
MaxClients 2000
#最大并行处理数量。子进程最大数量=MaxClients/ThreadsPerChild
ServerLimit 25
#只有在你需要将MaxClients和ThreadsPerChild设置成需要超过默认值16个子进程的时候才需要使用这个指令。不要将该指令的值设置的比MaxClients 和ThreadsPerChild需要的子进程数量高。
MinSpareThreads 50
#最少空线程数
MaxSpareThreads 200
#最大空闲线程数
ThreadLimit 200
#这个指令设置了每个子进程可配置的线程数ThreadsPerChild上限,该指令的值应当和ThreadsPerChild可能达到的最大值保持一致。
ThreadsPerChild 100
#子进程建立的服务线程数
MaxRequestsPerChild 0
#设置每个子进程在其生存期内允许伺服的最大请求数量。到达MaxRequestsPerChild的限制后,子进程将会结束。如果MaxRequestsPerChild为"0",子进程将永远不会结束。
</IfModule>


工作模式修改方法:
重新编译指定工作模式(默认为prefork)

复制代码 代码如下:

./configure --with-mpm=worker


注意:
对工作模式相关参数做出更改后,必须关闭apache服务后重新启动服务方可。
直接利用restart启动将是无效的。

相关文章

  • Linux之进程间通信(共享内存【mmap实现+系统V】)

    Linux之进程间通信(共享内存【mmap实现+系统V】)

    这篇文章主要介绍了Linux之进程间通信(共享内存【mmap实现+系统V】),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Linux系统中swap分区的设置与增加/删除

    Linux系统中swap分区的设置与增加/删除

    我们都知道在安装Linux系统时在分区时可以分配swap分区,而系统安装后(在运行中)如何建立或调整swap分区呢?下面这篇文章主要给大家介绍了关于Linux系统中swap分区的设置与增加/删除的相关资料,需要的朋友可以参考下
    2018-07-07
  • windows apache多端口虚拟主机配置方法

    windows apache多端口虚拟主机配置方法

    有很多朋友喜欢在windows下使用apache作为web服务器,有时候想用非80端口提供服务,因为未备案域名都是封了80端口,提供下载的时候可以用别的端口了,这里简单分享下,方便需要的朋友
    2013-03-03
  • Apache运行模式之standalone和inetd模式介绍

    Apache运行模式之standalone和inetd模式介绍

    这篇文章主要介绍了Apache运行模式之standalone和inetd模式介绍,本文讲解了ServerType这个配置参数,ServerType这个配置选项指定如何运行Apache,需要的朋友可以参考下
    2015-06-06
  • Linux命令之关于用户组操作

    Linux命令之关于用户组操作

    这篇文章主要介绍了Linux命令之关于用户组操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Ubuntu20.04修改ip地址的方法示例

    Ubuntu20.04修改ip地址的方法示例

    这篇文章主要介绍了Ubuntu20.04修改ip地址的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • centos6.5 lamp 环境(使用yum安装方法)

    centos6.5 lamp 环境(使用yum安装方法)

    这篇文章主要介绍了centos6.5下安装lamp环境 使用yum安装方法,需要的朋友可以参考下
    2016-10-10
  • Apache Shiro 使用手册(二) Shiro 认证

    Apache Shiro 使用手册(二) Shiro 认证

    认证就是验证用户身份的过程。在认证过程中,用户需要提交实体信息(Principals)和凭据信息(Credentials)以检验用户是否合法。最常见的“实体/凭证”组合便是“用户名/密码”组合
    2014-06-06
  • 使用Linux要改掉几个的命令习惯

    使用Linux要改掉几个的命令习惯

    现在越来越多的人用linux系统,本文分享的这些习惯也许会令你事半功倍,找到其中的乐趣。刚开始使用Linux时你也许会感到不习惯,许多高手也都有这样的经历。毕竟,曾经他们也都是新手。好的习惯可以提高工作效率以及命令的运行效率,下面来一起看看吧。
    2016-11-11
  • Linux系统用户如何添加到用户组

    Linux系统用户如何添加到用户组

    这篇文章主要介绍了Linux系统用户如何添加到用户组问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07

最新评论