最近看到一个面试题,问apache工作模式,天可怜见,笔者我以前是真没注意过这个,汗颜路过。 默认的rpm包安装时apache默认使用的是Prefork的模式, prefork模式通俗点说就是一个多进程单线程模式,一个进程只含有一个线程,它的缺点就是相对work模式非常占用内存,在流量非常大的服务器上可能会使用work模式,当然笔者认为这主要根据公司实际情况来看了,如果这个公司不是很缺钱访问量中等采用这个prefork完全可以,毕竟work那种模式的第三方模块的安全性能还不够好,这个仁者见仁,智者见智。
prefork下默认maxclients为256,如果要加大(一般我觉得都是要加大的)就要加上Serverlimit的限制:
work模式就是多进程多线程,一个进程可以包含多个线程,而每个进程下的线程是共享内存的,缺点就是一个线程崩溃的话连带这个进程下的所有线程都会崩溃掉。
贴一个我的prefork的设置和work的设置:
复制代码代码如下:
StartServers 10
MinSpareServers 10 MaxSpareServers 15 ServerLimit 2000 MaxClients 1000 MaxRequestsPerChild 10000
work 例:
复制代码代码如下:
StartServers 3
(责任编辑:IT)MaxClients 2000 ServerLimit 25 MinSpareThreads 50 MaxSpareThreads 200 ThreadLimit 200 ThreadsPerChild 100 MaxRequestsPerChild 0 #####最大活跃进程数=2000/100=20<=25 |