让运用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


版权声明: 原创作品,许可转载,转载时请务必以超链接形式标明文章 原始来由 、作者信息和本声明。否则将究查司法责任。

原文地址:https://www.cnblogs.com/zgqjymx/p/1975477.html