All things are difficult before they are easy. 没有软件的裸机是一具僵尸,没有硬件的软件是一个幽灵。2012,专注于Linux和C语言,关注自动化、性能测试,关注开源社区和开源测试工具、方法,尝试测试团队管理!
Apache的工作模式简介
上一篇 /
下一篇 2010-06-20 17:45:57
/ 个人分类:应用服务器
服务器的优化 (MPM: Multi-Processing Modules)apache2主要的优势就是对多处理器的支持更好,在编译时同过使用–with-mpm选项来决定apache2的工作模式。如果知道当前的apache2使用什么工作机制,可以通过httpd -l命令列出apache的所有模块,就可以知道其工作方式:(或者apache2 -l命令)(发现我们生产环境使用的Apache工作模式多为worker,我自己本机安装Apache2默认的也是worker模式)worker:如果httpd -l列出worker.c,则需要对下面的段进行配置:StartServers 2 #启动apache时启动的httpd进程个数。MaxClients 150 #最大并发连接数。MinSpareThreads 25 #服务器保持的最小空闲线程数。MaxSpareThreads 75 #服务器保持的最大空闲线程数。ThreadsPerChild 25 #每个子进程的产生的线程数。MaxRequestsPerChild 0 #每个子进程被请求服务多少次后被kill掉。0表示不限制,推荐设置为1000。ServerLimit 75 #子进程数量限制 ServerLimit的最大值是20000,如果还需要加大的话,可以修改源代码。该模式是由线程来监听客户的连接。当有新客户连接时,由其中的一个空闲线程接受连接。服务器在启动时启动两个进程,每个进程产生的线程数是固定的
(ThreadsPerChild决定),因此启动时有50个线程。当50个线程不够用时,服务器自动fork一个进程,再产生25个线程。PS:ServerLimit和ThreadLimit这两个指令决定了活动子进程数量和每个子进程中线程数量的硬限制。要想改变这个硬限制必须完全停止服务器
然后再启动服务器(直接重启是不行的)。prefork:如果httpd -l列出prefork.c,则需要对下面的段进行配置:StartServers 5 #启动apache时启动的httpd进程个数。MinSpareServers 5 #服务器保持的最小空闲进程数。MaxSpareServers 10 #服务器保持的最大空闲进程数。MaxClients 150 #最大并发连接数。MaxRequestsPerChild 1000 #每个子进程被请求服务多少次后被kill掉。0表示不限制,推荐设置为1000。在该工作模式下,服务器启动后起动5个httpd进程(加父进程共6个,通过ps
-ax|grephttpd命令可以看到)。当有用户连接时,apache会使用一个空闲进程为该连接服务,同时父进程会fork一个子进程。直到内存中
的空闲进程达到MaxSpareServers。该模式是为了兼容一些旧版本的程序。我缺省编译时的选项。perchild:如果httpd -l列出perchild.c,则需要对下面的段进行配置:NumServers 5 #服务器启动时启动的子进程数StartThreads 5 #每个子进程启动时启动的线程数MinSpareThreads 5 #内存中的最小空闲线程数MaxSpareThreads 10 #最大空闲线程数MaxThreadsPerChild 2000 #每个线程最多被请求多少次后退出。0不受限制MaxRequestsPerChild 10000 #每个子进程服务多少次后被重新fork。0表示不受限制。该模式下,子进程的数量是固定的,线程数不受限制。当客户端连接到服务器时,又空闲的线程提供服务。
如果空闲线程数不够,子进程自动产生线程来为新的连接服务。该模式用于多站点服务器。参考资料:http://www.phpq.net/apache/apache-server-optimization.html
收藏
举报
TAG:
Apache
apache
prefork
worker
工作模式