让运用Apache的网站速率飞起来-2
 
worker的义务原理 
绝关于prefork,worker是2.0 版中全新的撑持多线程和多历程夹杂模子的MPM.因为运用线程来处理,以是可以处理相对海量的乞求,而体系本钱的开支要小于基于历程的任事器.但是, worker也运用了多历程,每个历程又天生多个线程,以掉掉基于历程任事器的稳固性.这种MPM的义务体例将是Apache 2.0的开展趋向. 
worker的义务原理是,由主控制历程天生“StartServers”个子历程,每个子历程中包括坚硬的ThreadsPerChild 线程数,各个线程自力刻处理乞求.非常,为了不在乞求到来时再天生线程,MinSpareThreads和MaxSpareThreads设置了最少和最多的空位空闲线程数;而MaxClients设置了一切子历程中的线程总数.倘使现有子历程中的线程总数不克不及餍足负载,控制历程将派生新的子历程. 
# 下面我以worker形式休止编译装配 
# ./configure --prefix=/usr/local/apache 
--with-mpm=worker --enable-so(让它撑持DSO功用,这样从此可以静态加载模块) 
# make 
# make install 
# cd /usr/local/apache/conf 
# vi httpd.conf 
StartServers 2 MaxClients 
150 ServerLimit 25 MinSpareThreads 
25 MaxSpareThreads 75 ThreadLimit 
25 ThreadsPerChild 25 MaxRequestsPerChild 0 
Worker形式下所能同时处理的乞求总数是由子历程总数乘以ThreadsPerChild值决意的,应该年夜于便是MaxClients.倘使负载很年夜,现有的子历程数不克不及餍足时,控制历程会派生新的子历程.默许最年夜的子历程总数是16,加年夜时也须要显式声明ServerLimit(最年夜值是20000) 
须要注意的是,倘使显式声了然ServerLimit,那么它乘以ThreadsPerChild的值必需年夜于便是MaxClients,而且MaxClients必需是ThreadsPerChild的整数倍,否则Apache将会主动调治到一个响应值(年夜概是个非希冀值).下面是笔者的 worker设置段: 
StartServers 3 MaxClients 2000 ServerLimit 
25 MinSpareThreads 50 MaxSpareThreads 
200 ThreadLimit 200 ThreadsPerChild 
100 MaxRequestsPerChild 0 
# 留存插手. 
# /usr/local/apache/bin/apachectl start 
# 可遵照理论情况来设置Apache干系的焦点参数,以掉掉最年夜的机能和稳固性. 
限定Apache并发邻接数 
我们晓适合网站以http体例提供软件下载时,倘使每个用户都开启多个线程并没有带宽的限定,将很快到达http的最年夜邻接数年夜概形成搜集梗阻,使得网站的良多正常任事都无法运转.下面我们添加mod_limitipconn模块,来控制http的并发邻接数. 
# wget http://dominia.org/djao/limit/mod_limitipconn-0.22.tar.gz 
# tar zxvf mod_limitipconn-0.22.tar.gz 
# cd mod_limitipconn-0.22 
# /usr/local/apache/bin/ apxs -c -i -a mod_limitipconn.c 
# 编译好后会主动把mod_rewrite.so拷贝到/usr/local/apache/modules下,并修正你的httpd.conf文件. 
# vi /usr/local/apache/conf/httpd.conf 
# 在最后一行插手 
#所限定的目录地点,此处暗示主机的根目录MaxConnPerIP 2 
#所限定的每个IP并发邻接数为2个 
# 留存插手. 
# /usr/local/apache/bin/apachectl start
防御文件被盗链 
我们适才已经限定了IP并发数,但倘使对方把链接盗链到另外页面,我们适才做的就毫有意义了,因为他完全可以经过历程蚂蚁或快车休止下载.以是就这种情况,我们要引用mod_rewrite.so模块.这样,当他盗链了文件,经过历程mod_rewrite.so模块把页面引到了一个事前我们订定好的错误页面里,这样就防御了盗链。
# /usr/local/apache/bin/apxs -c -i -a /opt/httpd-2.0.52/modules/mappers/mod_rewrite.c 
# 编译好后会主动把mod_rewrite.so拷贝到/usr/local/apache/modules下,并修正你的httpd.conf文件. 
# vi /usr/local/apache/conf/httpd.conf 
RewriteEngine onRewriteCond %{HTTP_REFERER} !
^http://www.squall.cn/.*$ [NC]RewriteCond %{HTTP_REFERER} !
^http://www.squall.cn$ [NC]RewriteCond %{HTTP_REFERER} !
^http://squall.cn/.*$ [NC]RewriteCond %{HTTP_REFERER} !
^http://squall.cn$ [NC]RewriteRule .*\\.
(jpg gif png bmp tar gz rar zip exe)$ 
http://www.squall.cn/error.htm [R,NC]
到此,我们就对Apache做了一次单方面优化,机能比本来光鲜鲜明地有了很年夜的提高.此次施行进程到此也就圆满的完毕了.置信年夜家经过历程读完我的这篇文章后,对Apache优化也有了一些心得,置信你在义务中也会处理好突发变乱。
 
 
来自: 新客网(www.xker.com) 详文参考:http://www.xker.com/page/e2007/1011/35751_2.html
版权声明:
原创作品,许可转载,转载时请务必以超链接形式标明文章 原始来由 、作者信息和本声明。否则将究查司法责任。
 
                    
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号