apache的工作模式.pdf
《apache的工作模式.pdf》由会员分享,可在线阅读,更多相关《apache的工作模式.pdf(4页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、 没有 百度文库财富值 请到文库帮手网 w w w.365x u e y u a n.c o m 免费帮下载 百度文库积分 资料 本文由z h e n g q i a n g 0723贡献 d o c 1。MPM-a p a c h e 的工作模式 Ap a c h e 2.0 在性能上的改善最吸引人。在支持 POSIX 线程的 Un i x 系统上,Ap a c h e 可以通过 不同的 MPM 运行在一种多进程与多线程相混合的模式下,增强部分配置的可扩充性能。MPM(Mu l t i -Pr o c e s s i n g Mo d u l e s,多道处理模块)是 Ap a ch e 2
2、.0 中影响性能的最核心特性。服务器可以按站点的特殊需要进行自定制。在用户级,MPM 看起来和其它 Ap a c h e 模块非常类似。主要区别是在任意时刻只能有一种 MPM 被装载到服务器中。以下演示一下在 Ap a c h e 2.0 中如何指定 MPM。#t a r -xv z f h t t p d-2.0.59.t a r.g z#c d h t t p d-2.0.59#./c o n f i g u r e -h e l p|g r e p m p m -w it h-m p m=MPM Ch o o s e t h e p r o c e s s m o d e l f o r
3、 Ap a c h e t o u s e.MPM=b e o s|w o r k e r|p re f o r k|m p m t _o s 2|p e r c h i l d|l e a d e r|t h r e a d p o o l 上述操作用来选择要使用的进程模型,即哪种 MPM 模块。Be o s、m p m t _o s 2 分别是 Be OS 和 OS/2 上缺省的 MPM,p e r c hi l d 主要设计目的是以不同的用户和组的身份来运行不同的 子进程。这在运行多个需要 CGI 的虚拟主机时特别有用,会比 1.3 版中的 Su Ex e c 机制做得 更好。l e a
4、 d e r 和 t h r e a d p o o l 都是基于 w o r k e r 的变体,还处于实验性阶段,某些情况下并不会 按照预期设想的那样工作,所以 Ap a c h e 官方也并不推荐使用。因此,我们主要阐述 pr e f o r k 和 w o r k e r 这两种和性能关系最大的产品级 MPM。p r e f o r k 的工作原理及配置 如果不用“-w i t h-m p m”显式指定某种 MPM,p r e f o r k 就是 Un i x 平台上缺省的 MPM。它所采 用的预派生子进程方式也是 Ap a c h e 1.3 中采用的模式。p r e f o r
5、k 本身并没有使用到线程,2.0 版使用它是为了与 1.3 版保持兼容性;另一方面,p r e f or k 用单独的子进程来处理不同的请求,进程之间是彼此独立的,这也使其成为最稳定的 MPM 之一。若使用 p r e f o r k,m a k e 编译和 m a k e i n s t a l l 安装后,在 使用“h t t p d -l”来确定当前使用的 MPM,应该会看到 p r e f o r k.c(如果看到 w o r k e r.c 说明使用的是 w o r k e r MPM,依此类推)。再查看缺 省生成的 h t t p d.c o n f 配置文件,里面包含如下配置段:
6、St a r t Se r v e r s 5 Mi n Sp a r e Se r v e r s 5 Ma x Sp a r e Se r v e r s 10 Ma x Cl i e n t s 150 Ma x Re q u e s t s Pe r Ch i l d 0 p r e f o r k 的 工 作 原 理 是,控 制 进 程 在 最 初 建 立“St a r t Se r v e r s”个 子 进 程 后,为 了 满 足 Mi n Spa r e Se r v e r s 设置的需要创建一个进程,等待一秒钟,继续创建两个,再等待一秒钟,继续创建四个如此按指数级增加创建的
7、进程数,最多达到每秒 32 个,直到满足 Mi n Sp a r e Se r v e r s 设置的值为止。这就是预派生(p r e f o r k)的由来。这种模式可以不必在请 求到来时再产生新的进程,从而减小了系统开销以增加性能。Ma x Sp a r e Se r v e r s 设置了最大的空闲进程数,如果空闲进程数大于这个值,Ap a c h e 会自动 k i l l 掉一些多余进程。这个值不要设得过大,但如果设的值比 Mi n Spa r e Se r v e r s 小,Ap a c h e 会自 动把其调整为 Mi n Sp a r e Se r v e r s+1。如果站
8、点负载较大,可考虑同时加大 Mi n Sp a r e Se r v e r s 和 Ma x Sp a r e Se r v e r s。Ma x Re q u e s t s Pe r Ch i l d 设 置 的 是 每 个 子 进 程 可 处 理 的 请 求 数。每 个 子 进 程 在 处 理 了“Ma x Re q u e s t s Pe r Ch i l d”个请求后将自动销毁。0 意味着无限,即子进程永不销毁。虽然缺省 设为 0 可以使每个子进程处理更多的请求,但如果设成非零值也有两点重要的好处:可防止意外的内存泄漏;在服务器负载下降的时侯会自动减少子进程数。因此,可根据服务器
9、的负载来调整这个值。笔者认为 10000 左右比较合适。Ma x Cl i e n t s 是这些指令中最为重要的一个,设定的是 Ap a c h e 可以同时处理的请求,是对 其缺省值 150 是远远不够的,如果请求总数已达到这个值(可 Ap ac h e 性能影响最大的参数。,那么后面的请求就要排队,直到某个已处理请求完毕。通过 p s -e f|g r e p h t t p|w c -l 来确认)这就是系统资源还剩下很多而 HTTP 访问却很慢的主要原因。系统管理员可以根据硬件配置 和负载情况来动态调整这个值。p a g e 1 虽然理论上这个值越大,可以处理的请求就越多,Ap a c
10、 h e 但 默认的限制不能大于 256。如果把这个值设为大于 256,那么 Ap a c h e 将无法起动。事实上,256 对于负载稍重的站点也是不够的。Ap a c h e 1.3 中,在 这是个硬限制。如果要加大这个值,必须在“c o n f i g u r e”前手工修改的源代码树下的 s r c/i n c l u d e/h t t p d.h 中查找 256,就会发现“#d e f i n e HARD_SERVER_LIMIT 256”这行。把 256 改为要增大的值(如 4000),然后重新编 译 Ap a c h e 即可。在 Ap a c h e 2.0 中新加入了 S
11、e r v e r Lim i t 指令,使得无须重编译 Ap a c h e 就可 以加大 Ma x Cl i e n t s。下面是笔者的 p r e f or k 配置段:St a r t Se r v e r s 10 Mi n Sp a r e Se r v e r s 10 Ma x Sp a r e Se r v e r s 15 Se r v e r Lim i t 2000 Ma x Cl i e n t s 1000 Ma x Re q u e s t s Pe r Ch i l d 10000 上述配置中,Se r v e r Li m i t 的最大值是 2000,对于
12、大多数站点已经足够。如果一定要再加大 这个数值,对位于源代码树下 s e r v e r/m p m/p r e f o r k/p r e f o r k.c 中以下两行做相应修改即可:#d e f i n e DEFAULT_SERVER_LIMIT 256#d e f i n e MAX_SERVER_LIMIT 20000 w o r k e r 的工作原理及配置 相对于 p r e f o r k,w o r k e r 是 2.0 版中全新的支持多线程和多进程混合模型的 MPM。由于使用 线程来处理,所以可以处理相对海量的请求,而系统资源的开销要小于基于进程的服务器。但是,w o
13、r k e r 也使用了多进程,每个进程又生成多个线程,以获得基于进程服务器的稳定 性。这种 MPM 的工作方式将是 Ap a c h e 2.0 的发展趋势。在 c on f i g u r e -w i t h-m p m=w o r k e r 后,进行 m a k e 编译、m a k e i n s t a l l 安装。在缺省生成的 h t t p d.c o n f 中有以下配置段:St a r t Se r v e r s 2 Ma x Cl i e n t s 150 Mi n Sp a r e Th r e ad s 25 Ma x Sp a r e Th r e a d
14、s 75 Th r e a d s Pe r Ch i l d 25 Ma x Re q u e s t s Pe r Ch i l d 0 w o r k e r 的工作原理是,由主控制进程生成“St a r t Se r v e r s”个子进程,每个子进程中包含固定的 Th r e a d s Pe r Ch i l d 线程数,各个线程独立地处理请求。同样,为了不在请求到来时再生成线程,Mi n Sp a r e Th r e a d s 和 Ma x Sp a r e Th r e a d s 设置了最少和最多的空闲线程数;而 Ma x Cl i e n t s 设置 如果现有子进程
15、中的线程总数不能满足负载,控制进程将派生 了所有子进程中的线程总数。新的子进程。Mi n Sp a r e Th r e a d s 和 Ma x Sp ar e Th r e a d s 的最大缺省值分别是 75 和 250。这两个参数对 Ap a c h e 的性能影响并不大,可以按照实际情况相应调节。Th r e a d s Pe r Ch i l d 是 w o r k e r MPM 中与性能相关最密切的指令。Th r e a d s Pe r Ch i l d 的最大缺省值 是 64,如果负载较大,64 也是不够的。这时要显式使用 Th r e a d Li m i t 指令,它的
16、最大缺省 值是 20000。上述两个值位于源码树 s e r v e r/m p m/w o r k e r/w o r k e r.c 中的以下两行:#d e f i n e DEFAULT_THREAD_LIMIT 64#d e f i n e MAX_THREAD_LIMIT 20000 这两行对应着 Th r e a d s Pe r Ch i l d 和 Thr e a d Li m i t 的限制数。最好在 c o n f i g u r e 之前就把 64 改成 所希望的值。注意,不要把这两个值设得太高,超过系统的处理能力,从而因 Ap a c h e 不起 动使系统很不稳定。W
17、o r k e r 模式下所能同时处理的请求总数是由子进程总数乘以 Th r e a d s Pe r Ch i l d 值决定的,应 该大于等于 Ma x Cl i e n t s。如果负载很大,现有的子进程数不能满足时,控制进程会派生新的 子进程。默认最大的子进程总数是 16,加大时也需要显式声明 Se r v e r Li m i t (最大值是 20000)。这两个值位于源码树 s e r v e r/m p m/w o r k er/w o r k e r.c 中的以下两行:#d e f i n e DEFAULT_SERVER_LIMIT 16#d e f i n e MAX_SE
18、RVER_LIMIT 20000 需要注意的是,如果显式声明了 Se r v e r Li m i t,那么它乘以 Th r e a d s Pe r Ch i l d 的值必须大于等 于 Ma x Cl i e n t s,而且 Ma x Cl i e n t s 必须是 Th r e a d s Pe r Ch i l d 的整数倍,否则 Ap a c h e 将会自动调 节到一个相应值(可能是个非期望值)。下面是笔者的 w o r k e r 配置段:St a r t Se r v e r s 3 Ma x Cl i e n t s 2000 Se r v e r Li m i t 25
19、 Mi n Sp a r e Th r e a d s 50 Ma x Sp a r e Th r e a d s 200 Th r e a d Li m i t 200 Th r e a d s Pe r Ch i l d 100 Ma x Re q u e s t s Pe r Ch il d 0 通过上面的叙述,可以了解到 Ap a c h e 2.0 中 p r e f o r k 和 w o r k e r 这两个重要 MPM 的工作原理,并可根据实际情况来配置 Ap a c h e 相关的核心参数,以获得最大的性能和稳定性。下面我以 w o r k e r 模式进行编译安装#./c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- apache 工作 模式
限制150内