`
javatgo
  • 浏览: 1126739 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

apache的MPM模块两种工作模式详解(多任务高并发)

 
阅读更多

Apache同时处理大量的并发连接,得益于Apache的MPM模块

MPM将网络连接相关的处理独立成为模块的形式,这样不同的平台就可以使用不同的并发模型,从而达到最优的效果


空闲子进程:是指没有正在处理请求的子进程。

1、prefork.c模块(一个非线程型的、预派生的MPM)
prefork MPM 使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接。在大多数平台上,Prefork MPM在效率上要比Worker MPM要高,但是内存使用大得多。prefork的无线程设计在某些情况下将比worker更有优势:他能够使用那些没有处理好线程安全的第三方模块,并 且对于那些线程调试困难的平台而言,他也更容易调试一些。
ServerLimit 20000
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 1000
MaxRequestsPerChild 0
ServerLimit 2000
//默认的MaxClient最大是256个线程,假如想配置更大的值,就的加上ServerLimit这个参数。20000是ServerLimit这个参数的最大值。假如需要更大,则必须编译apache,此前都是无需重新编译Apache。
生效前提:必须放在其他指令的前面
StartServers 5
//指定服务器启动时建立的子进程数量,prefork默认为5。
MinSpareServers 5
//指定空闲子进程的最小数量,默认为5。假如当前空闲子进程数少于MinSpareServers ,那么Apache将以最大每秒一个的速度产生新的子进程。此参数不要设的太大。
MaxSpareServers 10
// 配置空闲子进程的最大数量,默认为10。假如当前有超过MaxSpareServers数量 的空闲子进程,那么父进程将杀死多余的子进程。此参数不要设的太大。假如您将该指令的值配置为比MinSpareServers小,Apache将会自动 将其修改成"MinSpareServers+1"。
MaxClients 256
//限定同一时间客户端最大接入请求的数量(单个进程并发线程数),默认为256。任何超过MaxClients限制的请求都将进入等候队列,一旦一个链接被释放,队列中的请求将得到服务。要增大这个值,您必须同时增大ServerLimit 。
MaxRequestsPerChild 10000
//每个子进程在其生存期内允许伺服的最大请求数量,默认为10000.到达MaxRequestsPerChild的限制后,子进程将会结束。假如MaxRequestsPerChild为"0",子进程将永远不会结束。
将MaxRequestsPerChild配置成非零值有两个好处:
1.能够防止(偶然的)内存泄漏无限进行,从而耗尽内存。
2.给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。
工作方式:
一个单独的控制进程(父进程)负责产生子进程,这些子进程用于监听请求并作出应答。Apache总是试图保持一些备用的 (spare)或是空闲的子进程用于迎接即将到来的请求。这样客户端就无需在得到服务前等候子进程的产生。在Unix系统中,父进程通常以root身份运 行以便邦定80端口,而 Apache产生的子进程通常以一个低特权的用户运行。User和Group指令用于配置子进程的低特权用户。运行子进程的用户必须要对他所服务的内容有 读取的权限,但是对服务内容之外的其他资源必须拥有尽可能少的权限。
2、worker.c模块(支持混合的多线程多进程的多路处理模块)
worker MPM 使用多个子进程,每个子进程有多个线程。每个线程在某个确定的时间只能维持一个连接。通常来说,在一个高流量的HTTP服务器上,Worker MPM是个比较好的选择,因为Worker MPM的内存使用比Prefork MPM要低得多。但worker MPM也由不完善的地方,假如一个线程崩溃,整个进程就会连同其任何线程一起"死掉".由于线程共享内存空间,所以一个程式在运行时必须被系统识别为"每 个线程都是安全的"。
ServerLimit 50
ThreadLimit 200
StartServers 5
MaxClients 5000
MinSpareThreads 25
MaxSpareThreads 500
ThreadsPerChild 100
MaxRequestsPerChild 0
ServerLimit 16
//服务器允许配置的进程数上限。这个指令和ThreadLimit结合使用配置了MaxClients最大允许配置的数值。任何在重启期间对这个指令的改变都将被忽略,但对MaxClients的修改却会生效。
ThreadLimit 64
//每个子进程可配置的线程数上限。这个指令配置了每个子进程可配置的线程数ThreadsPerChild上限。任何在重启期间对这个指令的改变都将被忽略,但对ThreadsPerChild的修改却会生效。默认值是"64".
StartServers 3
//服务器启动时建立的子进程数,默认值是"3"。
MinSpareThreads 75
//最小空闲线程数,默认值是"75"。这个MPM将基于整个服务器监控空闲线程数。假如服务器中总的空闲线程数太少,子进程将产生新的空闲线程。
MaxSpareThreads 250
// 配置最大空闲线程数。默认值是"250"。这个MPM将基于整个服务器监控空闲线程数。假如服 务器中总的空闲线程数太多,子进程将杀死多余的空闲线程。MaxSpareThreads的取值范围是有限制的。Apache将按照如下限制自动修正您配 置的值:worker需要其大于等于 MinSpareThreads加上ThreadsPerChild的和
MaxClients 400
//允许同时伺服的最大接入请求数量(最大线程数量)。任何超过MaxClients限制的请求都将进入等候 队列。默认值是"400",16 (ServerLimit)乘以25(ThreadsPerChild)的结果。因此要增加MaxClients的时候,您必须同时增加 ServerLimit的值。
ThreadsPerChild 25
//每个子进程建立的常驻的执行线程数。默认值是25。子进程在启动时建立这些线程后就不再建立新的线程了。
MaxRequestsPerChild 0
//配置每个子进程在其生存期内允许伺服的最大请求数量。到达MaxRequestsPerChild的限制后,子进程将会结束。假如MaxRequestsPerChild为"0",子进程将永远不会结束。
将MaxRequestsPerChild配置成非零值有两个好处:
1.能够防止(偶然的)内存泄漏无限进行,从而耗尽内存。
2.给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。
注意
对于KeepAlive链接,只有第一个请求会被计数。事实上,他改变了每个子进程限制最大链接数量的行为。
工作方式:
每个进程能够拥有的线程数量是固定的。服务器会根据负载情况增加或减少进程数量。一个单独的控制进程(父进程)负责子进程的建 立。每个子进程能够建立 ThreadsPerChild数量的服务线程和一个监听线程,该监听线程监听接入请求并将其传递给服务线程处理和应答。Apache总是试图维持一个备 用(spare)或是空闲的服务线程池。这样,客户端无须等待新线程或新进程的建立即可得到处理。在Unix中,为了能够绑定80端口,父进程一般都是以 root身份启动,随后,Apache以较低权限的用户建立子进程和线程。User和Group指令用于配置Apache子进程的权限。虽然子进程必须对 其提供的内容拥有读权限,但应该尽可能给予他较少的特权。另外,除非使用了suexec ,否则,这些指令配置的权限将被CGI脚本所继承。
公式:
ThreadLimit >= ThreadsPerChild
MaxClients = MinSpareThreads+ThreadsPerChild

硬限制:
ServerLimi和ThreadLimit这两个指令决定了活动子进程数量和每个子进程中线程数量的硬限制。要想改变这个硬限制必须完全停止服务器然后再启动服务器(直接重启是不行的)。
Apache在编译ServerLimit时内部有一个硬性的限制,您不能超越这个限制。
prefork MPM最大为"ServerLimit 200000"
其他MPM(包括work MPM)最大为"ServerLimit 20000

Apache在编译ThreadLimit时内部有一个硬性的限制,您不能超越这个限制。
mpm_winnt是"ThreadLimit 15000"
其他MPM(包括work prefork)为"ThreadLimit 20000

注意

使用ServerLimit和ThreadLimit时要特别当心。假如将ServerLimit和ThreadLimit配置成一个高出实际需要许多的值,将会有过多的共享内存被分配。当配置成超过系统的处理能力,Apache可能无法启动,或系统将变得不稳定。


负载一个apache学习路线的文章:http://www.cnblogs.com/steven_oyj/archive/2010/05/29/1747028.html

分享到:
评论

相关推荐

    apache模块开发指南(中文版)

    Apache的开发人员认识到Apache 最初的...基于线程的MPM模块的引入也增强了UNIX上很多应用程序的可扩展性。 Apache 2的缺点在于它的API不能向前兼容Apache 1,因此一些第三方的模块和应用程序需要缓慢地升级到Apache 2。

    Apache源代码全景分析第1卷:体系结构与核心模块 part1

    包括配置文件、模块化结构、多任务并发,以及网络连接和请求读取,其中多任务并发体系结构是《Apache源代码全景分析第1卷:体系结构与核心模块》分析的重点,讨论了Prefork、Worker及WinNT三种MPM。《Apache源代码...

    Apache源代码全景分析第1卷:体系结构与核心模块 part2

    包括配置文件、模块化结构、多任务并发,以及网络连接和请求读取,其中多任务并发体系结构是《Apache源代码全景分析第1卷:体系结构与核心模块》分析的重点,讨论了Prefork、Worker及WinNT三种MPM。《Apache源代码...

    Apache Prefork、Worker和Event三种MPM详解

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

    Apache的fork模式和worker模式判断方法

    apache常用的工作模式有prefork和worker模式。运行命令httpd -l 或者apache2 -l ,输出的结果中如果含有prefork.c,那就是prefork模式,如果结果中含有worker.c,那就是worker模式。 知道模式之后我们可以在apache的...

    论文研究-一种基于MPM的帧内预测模式快速选择算法在HEVC中的应用 .pdf

    一种基于MPM的帧内预测模式快速选择算法在HEVC中的应用,周银河,门爱东,高性能视频编码(HEVC)已经成为最新的视频压缩标准,相对于之前所有的视频压缩标准,它显著地提升了压缩性能。在HEVC的帧内预测过�

    MPM3808_mpm3808程序驱动_

    可实现mpm3808传感器采样工作 IIC程序驱动

    麦克 MPM180/MPM185 TO-8封装压阻式压力敏感元件.pdf

    麦克 MPM180/MPM185 TO-8封装压阻式压力敏感元件pdf,麦克 MPM180/MPM185 TO-8封装压阻式压力敏感元件

    Apache HTTP Server Version 2.2 文档(2013.4.10最新)

    多路处理模块(MPM) Apache2.0新特性概述 Apache 2.2 新特性概述 配置段(容器) 服务器全局配置 站点导航 停止和重启 suEXEC支持 致谢与译者声明 从2.0升级到2.2 从1.3升级到2.0 从URL到文件系统的映射 Apache 1.3 API...

    apache中文手册(html)

    多路处理模块(MPM) 过滤器 处理器 服务器与工具 词汇表 用户指南 地址和端口绑定 配置文件 配置段 内容缓冲 内容协商 动态共享对象(DSO) 环境变量 日志文件 从URL到文件系统的映射 性能调整 安全方面...

    PSP MPM转换软件

    PSP MPM转换软件

    ApacheV2.0中文手册

    多路处理模块(MPM) 过滤器 处理器 服务器与工具 词汇表 用户指南 地址和端口绑定 配置文件 配置段 内容缓冲 内容协商 动态共享对象(DSO) 环境变量 日志文件 从URL到文件系统的映射 性能调整 安全...

    Apache2.2中文版参考手册

    多路处理模块(MPM) 过滤器 处理器 服务器与工具 词汇表 用户指南 地址和端口绑定 配置文件 配置段 内容缓冲 内容协商 动态共享对象(DSO) 环境变量 日志文件 从URL到文件系统的映射 性能调整 安全...

    Apache多路复用模块(MPMs)介绍

    主要介绍了Apache多路复用模块(MPMs)介绍,MPM,也叫多道处理模块(Multi Processing Module),关系到整个HTTP会话,本文就介绍它的相关知识,需要的朋友可以参考下

    mpm93模型计算程序

    为mpm93模型软件。

    mpm_boosmanage1.1.1

    书籍插件,好用 可另行下载专用模型 An experimental variant of the standard worker MPM Status

    MPM培训资料(全)

    MPM培训资料,非常适合初学者,入门和提高之用。高手肯垂顾的话,也可以瞧上一眼

    apache-formula:设置和配置Apache HTTP服务器

    阿帕奇 在GNU / Linux,FreeBSD和Windows OS上设置和配置Apache HTTP服务器的公式。 目录请参阅完整的。... 在Debian mpm_prefork , mpm_worker或mpm_event上配置apache mpm模块(仅Debian) 启用了Apache模

    mysql performance monitor mpm下载

    mpm安装包 mysql performance monitor 解压后可使用 其他依赖包不全

Global site tag (gtag.js) - Google Analytics