亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網(wǎng)絡(luò),我們將竭誠為您提供優(yōu)質(zhì)的服務(wù)! 誠征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯(lián)系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業(yè)務(wù)咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發(fā)消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術(shù)支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當(dāng)前位置:首頁 >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

優(yōu)化Apache,讓網(wǎng)站速度更快

添加時間:2018-9-20 22:51:23  添加: 思海網(wǎng)絡(luò) 
Apache 2.0在性能上的改善最吸引人。在支持POSIX線程的Unix系統(tǒng)上,Apache可以通過不同的MPM運行在一種多進(jìn)程與多線程相混合的模式下,增強(qiáng)部分配置的可擴(kuò)充性能。相比于Apache 1.3,2.0版本做了大量的優(yōu)化來提升處理能力和可伸縮性,并且大多數(shù)改進(jìn)在默認(rèn)狀態(tài)下即可生效。但是在編譯和運行時刻,2.0也有許多可以顯著提高性能的選擇。 

MPM(Multi -Processing Modules,多道處理模塊)是Apache2.0中影響性能的最核心特性。 

毫不夸張地說,MPM的引入是Apache 2.0最重要的變化。大家知道,Apache是基于模塊化的設(shè)計,而Apache 2.0更擴(kuò)展了模塊化設(shè)計到Web服務(wù)器的最基本功能。服務(wù)器裝載了一種多道處理模塊,負(fù)責(zé)綁定本機(jī)網(wǎng)絡(luò)端口、接受請求,并調(diào)度子進(jìn)程來處理請求。擴(kuò)展模塊化設(shè)計有兩個重要好處: 

  ◆ Apache可以更簡潔、有效地支持多種操作系統(tǒng); 

  ◆ 服務(wù)器可以按站點的特殊需要進(jìn)行自定制。 

在用戶級,MPM看起來和其它Apache模塊非常類似。主要區(qū)別是在任意時刻只能有一種MPM被裝載到服務(wù)器中。 

下面以Linux RedHat AS3為平臺,演示一下在Apache 2.0中如何指定MPM。 

# wget http://archive.apache.org/dist/httpd/httpd-2.0.52.tar.bz2 
# tar jxvf httpd-2.0.52.tar.bz2 
# cd httpd-2.0.52 
# ./configure --help|grep mpm 

顯示如下:

--with-mpm=MPM Choose the process model for Apache to use. MPM={beos|worker|prefork|mpmt_os2| perchild|leader|threadpool} 

上述操作用來選擇要使用的進(jìn)程模型,即哪種MPM模塊。Beos、mpmt_os2分別是BeOS和OS/2上缺省的MPM, perchild主要設(shè)計目的是以不同的用戶和組的身份來運行不同的子進(jìn)程。這在運行多個需要CGI的虛擬主機(jī)時特別有用,會比1.3版中的SuExec 機(jī)制做得更好。leader和threadpool都是基于worker的變體,還處于實驗性階段,某些情況下并不會按照預(yù)期設(shè)想的那樣工作,所以 Apache官方也并不推薦使用。因此,我們主要闡述prefork和worker這兩種和性能關(guān)系最大的產(chǎn)品級MPM。 

prefork的工作原理 
  如果不用“--with-mpm”顯式指定某種MPM,prefork就是Unix平臺上缺省的MPM。它所采用的預(yù)派生子進(jìn)程方式也是 Apache 1.3中采用的模式。prefork本身并沒有使用到線程,2.0版使用它是為了與1.3版保持兼容性;另一方面,prefork用單獨的子進(jìn)程來處理不同的請求,進(jìn)程之間是彼此獨立的,這也使其成為最穩(wěn)定的MPM之一。 
   prefork的工作原理是,控制進(jìn)程在最初建立“StartServers”個子進(jìn)程后,為了滿足MinSpareServers設(shè)置的需要創(chuàng)建一個進(jìn)程,等待一秒鐘,繼續(xù)創(chuàng)建兩個,再等待一秒鐘,繼續(xù)創(chuàng)建四個……如此按指數(shù)級增加創(chuàng)建的進(jìn)程數(shù),最多達(dá)到每秒32個,直到滿足 MinSpareServers設(shè)置的值為止。這就是預(yù)派生(prefork)的由來。這種模式可以不必在請求到來時再產(chǎn)生新的進(jìn)程,從而減小了系統(tǒng)開銷以增加性能。 

worker的工作原理 
   相對于prefork,worker是2.0 版中全新的支持多線程和多進(jìn)程混合模型的MPM。由于使用線程來處理,所以可以處理相對海量的請求,而系統(tǒng)資源的開銷要小于基于進(jìn)程的服務(wù)器。但是, worker也使用了多進(jìn)程,每個進(jìn)程又生成多個線程,以獲得基于進(jìn)程服務(wù)器的穩(wěn)定性。這種MPM的工作方式將是Apache 2.0的發(fā)展趨勢。 
   worker的工作原理是,由主控制進(jìn)程生成“StartServers”個子進(jìn)程,每個子進(jìn)程中包含固定的ThreadsPerChild 線程數(shù),各個線程獨立地處理請求。同樣,為了不在請求到來時再生成線程,MinSpareThreads和MaxSpareThreads設(shè)置了最少和最多的空閑線程數(shù);而MaxClients設(shè)置了所有子進(jìn)程中的線程總數(shù)。如果現(xiàn)有子進(jìn)程中的線程總數(shù)不能滿足負(fù)載,控制進(jìn)程將派生新的子進(jìn)程。 

# 下面我以worker模式進(jìn)行編譯安裝 
# ./configure --prefix=/usr/local/apache --with-mpm=worker --enable-so(讓它支持DSO功能,這樣以后可以動態(tài)加載模塊) 
# make 
# make install 
# cd /usr/local/apache/conf 
# vi httpd.conf

<IfModule worker.c> StartServers 2 MaxClients 150 ServerLimit 25 MinSpareThreads 25 MaxSpareThreads 75 ThreadLimit 25 ThreadsPerChild 25 MaxRequestsPerChild 0 </IfModule> 

Worker模式下所能同時處理的請求總數(shù)是由子進(jìn)程總數(shù)乘以ThreadsPerChild值決定的,應(yīng)該大于等于MaxClients。如果負(fù)載很大,現(xiàn)有的子進(jìn)程數(shù)不能滿足時,控制進(jìn)程會派生新的子進(jìn)程。默認(rèn)最大的子進(jìn)程總數(shù)是16,加大時也需要顯式聲明ServerLimit(最大值是20000) 

需要注意的是,如果顯式聲明了ServerLimit,那么它乘以ThreadsPerChild的值必須大于等于MaxClients,而且MaxClients必須是ThreadsPerChild的整數(shù)倍,否則Apache將會自動調(diào)節(jié)到一個相應(yīng)值(可能是個非期望值)。下面是筆者的 worker配置段: 
<IfModule worker.c> StartServers 3 MaxClients 2000 ServerLimit 25 MinSpareThreads 50 MaxSpareThreads 200 ThreadLimit 200 ThreadsPerChild 100 MaxRequestsPerChild 0 </IfModule> 
# 保存退出。 
# /usr/local/apache/bin/apachectl start 
# 可根據(jù)實際情況來配置Apache相關(guān)的核心參數(shù),以獲得最大的性能和穩(wěn)定性。 

二、限制Apache并發(fā)連接數(shù) 
我們知道當(dāng)網(wǎng)站以http方式提供軟件下載時,若是每個用戶都開啟多個線程并沒有帶寬的限制,將很快達(dá)到http的最大連接數(shù)或者造成網(wǎng)絡(luò)阻塞,使得網(wǎng)站的許多正常服務(wù)都無法運行。下面我們添加mod_limitipconn模塊,來控制http的并發(fā)連接數(shù)。 

# wget <IfModule mod_limitipconn.c> <Location />   #所限制的目錄所在,此處表示主機(jī)的根目錄 MaxConnPerIP 2  #所限制的每個IP并發(fā)連接數(shù)為2個 </Location> </IfModule> 
# 保存退出。 
# /usr/local/apache/bin/apachectl start 
# 下面我們用螞蟻或快車測試一下,如圖1: 

如出現(xiàn)上述圖所示,則表明配置成功。 

三、防止文件被盜鏈 
我們剛才已經(jīng)限制了IP并發(fā)數(shù),但如果對方把鏈接盜鏈到別的頁面,我們剛才做的就毫無意義了,因為他完全可以通過螞蟻或快車進(jìn)行下載。所以就這種情況,我們要引用mod_rewrite.so模塊。這樣,當(dāng)他盜鏈了文件,通過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] 
# 我們打開瀏覽器測試一下 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 
# 在最后一行加入

關(guān)鍵字:優(yōu)化、Apache、網(wǎng)站速度、Web、服務(wù)器
分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國增值電信業(yè)務(wù)經(jīng)營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網(wǎng)站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網(wǎng)安 舉報有獎  警警  手機(jī)打開網(wǎng)站