apache的多线程多进程的多路处理模块

来源:互联网 发布:以太网属于什么网络 编辑:程序博客网 时间:2024/06/07 20:42

 引用http://sunday.blog.51cto.com/360410/99864

问题:我在调试时,发现按如下进行,初始进程启动达到了ServerStart=25数量,但随后,进程会降到系统默认的3个.

注意:  活动子进程的最大数量取决于MaxClients除以ThreadsPerChild的值。

 

参考如下内容:
Apache MPM worker
说明
支持混合的多线程多进程的多路处理模块
状态
MPM
模块名
mpm_worker_module
源文件
worker.c
概述
此多路处理模块(MPM)使网络服务器支持混合的多线程多进程。由于使用线程来处理请求,所以可以处理海量请求,而系统资源的开销小于基于进程的MPM。但是,它也使用了多进程,每个进程又有多个线程,以获得基于进程的MPM的稳定性。
控制这个MPM的最重要的指令是,控制每个子进程允许建立的线程数的
ThreadsPerChild
指令,和控制允许建立的总线程数的
MaxClients
指令。

工作方式
每个进程可以拥有的线程数量是固定的。服务器会根据负载情况增加或减少进程数量。一个单独的控制进程(父进程)负责子进程的建立。每个子进程可以建立
ThreadsPerChild
数量的服务线程和一个监听线程,该监听线程监听接入请求并将其传递给服务线程处理和应答。
Apache总是试图维持一个备用(spare)或是空闲的服务线程池。这样,客户端无须等待新线程或新进程的建立即可得到处理。初始化时建立的进程数量由
StartServers
指令决定。随后父进程检测所有子进程中空闲线程的总数,并新建或结束子进程使空闲线程的总数维持在
MinSpareThreads

MaxSpareThreads
所指定的范围内。由于这个过程是自动调整的,几乎没有必要修改这些指令的缺省值。可以并行处理的客户端的最大数量取决于
MaxClients
指令。活动子进程的最大数量取决于
MaxClients
除以
ThreadsPerChild
的值。
有两个指令设置了活动子进程数量和每个子进程中线程数量的硬限制。要想改变这个硬限制必须完全停止服务器然后再启动服务器(直接重启是不行的),
ServerLimit
是活动子进程数量的硬限制,它必须大于或等于
MaxClients
除以
ThreadsPerChild
的值。
ThreadLimit
是所有服务线程总数的硬限制,它必须大于或等于
ThreadsPerChild
指令。这两个指令必须出现在其他
worker
MPM指令的前面。
在设置的活动子进程数量之外,还可能有额外的子进程处于"正在中止"的状态但是其中至少有一个服务线程仍然在处理客户端请求,直到到达
MaxClients
以致结束进程,虽然实际数量会很小。这个行为能够通过以下禁止特别的子进程中止的方法来避免:


  • MaxRequestsPerChild
    设为"0"

  • MaxSpareThreads

    MaxClients
    设为相同的值

一个典型的针对
worker
MPM的配置如下:
ServerLimit 16
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
在Unix中,为了能够绑定80端口,父进程一般都是以root身份启动,随后,Apache以较低权限的用户建立子进程和线程。
UserGroup
指令用于设置Apache子进程的权限。虽然子进程必须对其提供的内容拥有读权限,但应该尽可能给予它较少的特权。另外,除非使用了
suexec
,否则,这些指令设置的权限将被CGI脚本所继承。

参考如上内容(来自[url]http://apache.chinahtml.com/mod/worker.html[/url]),可以实现apache混合的多线程多进程的多路处理,重新编译apache2
./configure --with-mpm=worker
make
make install
在apache配置文件中加入如下内容
ServerLimit 16
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
这样就可以了.
如果您在重新编译时遇到,编译错误
undefined reference to `ap_thread_stacksize' ...
请在configure 前先执行 make distclean
(完)


本文来自ChinaUnix博客,如果查看原文请点:[url]http://blog.chinaunix.net/u2/66496/showart_697141.html[/url]本文出自 51CTO.COM技术博客

 

上一篇 Apache多路处理模块(MPM)  下一篇 Apache的prefork模式和worker模式

类别:服务器和存储 ┆技术圈(0) ┆ 阅读(330) ┆ 评论(0) ┆推送到技术圈┆返回首页  

 

    相关文章
原创粉丝点击