時間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)
通過擠出Apache服務(wù)器的每一分潛力你可以讓你的網(wǎng)站留給別人的印象大大改觀,特別是對一些動態(tài)網(wǎng)站更是如何。這篇文章主要涉及到對Apache服務(wù)器的安裝和設(shè)置如何進行優(yōu)化,這也是你最有控制權(quán)的部分。
測試與提高性能
Apache服務(wù)器已經(jīng)被設(shè)計得盡可能的快,即使你用一臺配置不高的機器,用不著進行太復(fù)雜的設(shè)置,它的響應(yīng)內(nèi)容就足以塞滿以前的各種窄帶連接。但隨網(wǎng)站內(nèi)容日益復(fù)雜和帶寬的增加,對Apache進行優(yōu)化以取得更好的性能變得日益重要起來。
如果優(yōu)化的結(jié)果僅僅是極小的性能提升那真是浪費時間。試想一下,你花了好幾個小時甚至幾天調(diào)整Apache的各種參數(shù)但結(jié)果僅是幾個百分點的性能提升?因此,在優(yōu)化前你做的第一步應(yīng)該是測試你目前的服務(wù)器的性能水平以便決定如何優(yōu)化你的服務(wù)器并衡量優(yōu)化的效果。
關(guān)于對Apache的測試我們已經(jīng)不是第一次提到了(見《沖出水面》一文),如同我們以前提到的,確定到底是哪一部分導(dǎo)致的瓶頸往往是一件困難的事,是因為Apache本身的設(shè)置問題還是由于你使用的動態(tài)網(wǎng)站程序環(huán)境?關(guān)于查找是否是因為網(wǎng)站程序引起的問題已經(jīng)超出了本文的范圍,這里我們主要講一下提高Apache服務(wù)器速度的一些通常做法以及它如何與構(gòu)成WEB網(wǎng)站的其它組件進行交互。
主機硬件
Apache所在的機器與操作系統(tǒng)環(huán)境是對性能影響最大因素,很明顯,一以368的PC與一臺P4或雙處理器的機器不會有同樣的性能。不過,如果不涉及硬件的改變,我們可以做的最大的事是首先看一下Apache是否運行在一臺專用的服務(wù)器上,如果與其它應(yīng)用共用一臺服務(wù)器肯定會影響服務(wù)器的性能。
在大多數(shù)情況下,告別是對靜態(tài)網(wǎng)站而言,內(nèi)存數(shù)量是一個影響性能的關(guān)鍵因素,因為它決定了Apache可以緩存多少內(nèi)容。它緩存的內(nèi)容越多,在硬盤上讀取內(nèi)容的機會就越少,而存取硬盤上的特定文件是一件很費時的操作。如果你的網(wǎng)站主要是一些靜態(tài)內(nèi)容,你最好使用mod_cache選項,如果你的內(nèi)存足夠大,可以使用mod_mem_cache選項。
第一個選項將信息緩存在磁盤上,當(dāng)它與mod_include選項一起使用時會有很好的效果,這個選項在建立一個頁面時在緩存中保存它的最終版本。使用mod_mem_cache將緩存內(nèi)容保存在一個可以被所有Apache進程共享的內(nèi)存堆中。
使用更快的磁盤或進一步使用RAID可以提高Apache對磁盤文件的訪問速度。注意,如果你做了下面的所有這些優(yōu)化,一個硬件的(而非軟件)升級方案是更好的選擇。最后一個談到的關(guān)于硬件的問題是CPU能力,這對動態(tài)內(nèi)容網(wǎng)站的影響很大,動態(tài)內(nèi)容越多要求越高。
主機環(huán)境
不管是使用何種操作系統(tǒng),下面這些原則都是適用的:
●盡可能減少非必要的后臺運行的程序數(shù)目。如果你真的很關(guān)心服務(wù)器性能,你甚至可以關(guān)閉一些通常被認為是必要的后臺服務(wù)。比如在UNIX下面,你可以關(guān)閉NFS服務(wù),任何打印服務(wù)甚至郵件發(fā)送服務(wù)(如果不使用這些服務(wù)),在Windows系統(tǒng)下,使用控制面板優(yōu)化系統(tǒng)和緩存,當(dāng)然,對于必要的服務(wù)(如MySQL)仍然需要運行。
●避免使用系統(tǒng)。如果在服務(wù)器運行時你利用它進行其它工作(如編譯軟件,編輯文件或配置機器)你必將降低服務(wù)器提供的性能。如果你必須在上面安裝一些組件,你可以在其它機器上編譯好后拷備到服務(wù)器上。
●讓你的系統(tǒng)組件維持在最新。雖然這主要是從安全角度的建議,不過軟件補丁往往提供了網(wǎng)絡(luò)和I/O方面的性能提升。
Apache程序
下面,就談到Apache本身了。
首先你確認一下是否Apache在編譯時是否僅包含了你的網(wǎng)站需要的組件。這意味著,你可以忽略一些用不著的組件。這使它占用的內(nèi)存更少,而且,它也表示你不用意外的激活一些選項降低服務(wù)器的性能。
靜態(tài)還是動態(tài)
靈活性常是一些Apache管理員考慮的主要因素,但靈活性也有代價,使用動態(tài)載入模塊非常方便,但它將導(dǎo)致性能下降,因為在需要時模塊才會被載入。不過動態(tài)模塊也有利于減少服務(wù)器對內(nèi)存的需求。
為了裝Apache安裝成靜態(tài)模式,使用設(shè)置腳本定義你需要的模塊,但是不要將它們定義為共享的(例如:使用--enable-rewrite而不要用--enable-rewrite=shared,也不要用共享選項--enable-so)。
模塊設(shè)置
如果你使用Apacher的靜態(tài)模式,你必須小心選項載入的模塊,這是靜態(tài)模式帶來的一個開銷--載入的模塊越多,占用的內(nèi)存越大,對于使用分叉多線程模型的程序這個效果更是明顯。
注意一些項目是被自動包含的,因此你需要顯式的指定包含或禁用需要的模塊。另外要記住如果需要包含進來一些如認證,PHP或mod_perl這樣的第三方模塊,你需要WEB服務(wù)(Web service),使用configure -help命令來查看可以使用的選項列表。
服務(wù)器設(shè)置
如果你的環(huán)境已經(jīng)建立Apache也已經(jīng)經(jīng)過優(yōu)化,就可以查看你的設(shè)置文件來進行下一步的優(yōu)化措施。一個好的方法就是簡化你的設(shè)置文件將文件中的指示(directives)減少到幾百行內(nèi),首先是刪除掉那些注釋行,進而刪除任何非必要的內(nèi)容。
簡化設(shè)置文件
第一步是簡化設(shè)置設(shè)置文件,它并不帶來任何直接的性能提升,但它將使設(shè)置文件易于使用減少你出錯的機會。
在進行優(yōu)化之前,從一個默認提供的設(shè)置文件開始是一個不錯的主意。這些文件常被放在Apache的設(shè)置目錄中,文件名為 httpd.conf.orig或者 httpd-std.conf,不要使用如performance-std.conf類似名稱的文件,從長遠的觀點看,如果你準備在里面加入大量的附加設(shè)置信息,它決不是一個好起點。另一方面,如果你的目標是建立一個很快的靜態(tài)WEB服務(wù)器,這可能是讓服務(wù)器運行起來的最簡單方法。
如果你熟悉Apache的設(shè)置指示用法或樂意瀏覽幫助文件,你可以從設(shè)置文件中刪除所有的注釋內(nèi)容,因為它們經(jīng)常讓實際的指示內(nèi)容變得難找,你也可以刪除對當(dāng)前平臺上用不到的多處理機方式(MPM)的引用。
禁用模塊
現(xiàn)在,我們已經(jīng)得到了一個清爽的設(shè)置文件,下面我們可以開始刪除其中我們系統(tǒng)用不到的元素,特別是:
●HostnameLookups(主機名查找),這增加了處理每個請求的開銷,首先,服務(wù)器會對DNS系統(tǒng)做一個反向查詢以找出客戶系統(tǒng)的主機名,然后又進行正向查詢看獲得的主機名是否真實指向客戶的IP。大多數(shù)情況下,你可以簡單的關(guān)閉這個功能,如果你經(jīng)常處理服務(wù)器日志,這個工作完全可以在以后進行。你可以通過在設(shè)置文件中加入指示HostnameLookups off來關(guān)閉這個功能。
●符號連接。當(dāng)打開這個選項時,Apache將檢查每個請求中是否包含對符號連接的引用,這將對請求中包含的每個路徑調(diào)用一次lstat()系統(tǒng)調(diào)用。除非你準備使用符號連接,否則用 Options -FollowSymLinks 來關(guān)掉它。
●服務(wù)器狀態(tài)信息。盡管這對測試與監(jiān)控服務(wù)器很有用,但它也為服務(wù)器帶來了額外的開銷,你可以通過尋找任何類似SetHandler server-status的指示來關(guān)閉,如果可能,你可以在安裝Apache時移除這個模塊。
●在可以更精確的時候盡可能不要使用通配符之類的靈活選項,例如,對于DirectoryIndex指示,明確的指定設(shè)置文件列表,最常用的放在最前。
●除非你有很好的理由否則就允許CGI的執(zhí)行,將似有的CGI文件放到一個特定的目錄并為之設(shè)定正確的權(quán)限,這避免了Apache對每一個請求都要判斷一次要求的是一個靜態(tài)文件還是一個動態(tài)文件。
禁用日志
寫入日志信息是一個很花費時間的工作,盡管Apache保持日志文件的打開狀態(tài)以節(jié)省打開文件的時間,但仍然得花費不少的時間。如果沒有必要存儲日志信息,你可以關(guān)閉這個選項以節(jié)省出更多的處理器時間,只需要在設(shè)置文件中把日志那一行注釋掉就可以關(guān)掉它。
如果必須保留日志,你可以關(guān)閉HostnameLookups選項(見上文)然后把日志文件拷備到另一臺機器上做進一步分析。
簡化目錄級的設(shè)置
htaccess文件可以極大的擴展Apache的設(shè)置參數(shù),而無需每次你改變設(shè)計都要編輯Apache主設(shè)置文件,但對這個文件的使用也降低了服務(wù)器的性能。
如果使用這個文件,Apache必需首先在當(dāng)前目錄中查找是否存在這個文件,如果存在就解析這個文件并在當(dāng)前目錄中應(yīng)用文件中的設(shè)置。更壞的是,Apache不僅要查看當(dāng)前的目錄,還要查看當(dāng)前目錄的所有上層目錄是否包括htaccess文件以根據(jù)所有這些文件最終確定設(shè)置。
如果你想最優(yōu)化服務(wù)器的性能,你應(yīng)該禁止使用htaccess文件,任何基本目錄的設(shè)置都可以在主設(shè)置文件中進行,而主設(shè)置文件僅在服務(wù)器啟動時解析一次。為了禁用htaccess文件,在任何節(jié)里加上指示AllowOverride None。
多處理方式設(shè)置
多處理方式(Multi-Processing Module/MPM)他允許特定平臺處理多個并發(fā)連接。MPM模塊是平臺相關(guān)的,對于Unix、Windows、BeOS、和NetWare有不同的解決方案,一些平臺有不止一個方案可以選擇。對大多數(shù)用戶而言,對于特定平臺的默認設(shè)置已經(jīng)工作得很好,而精確調(diào)整這些參數(shù)是一個費時的工作。不過如果你想最大限度的挖掘Apache的潛力,你必須調(diào)整這些設(shè)置。
對大多數(shù)平臺而言,只有一種MPM可選,不過在UNIX下則有兩個選項:prefork與worker,prefork模式生成多個相同的 Apache進程,而worker模式創(chuàng)建多個線程。通常而言,對于只有一到兩顆處理器的系統(tǒng),prefork模式工作得更好,而對于擁有更多處理器的系統(tǒng),線程模型工作得更有效率。
不管哪種情況,MaxClients指示是最有效的提高服務(wù)器性能的方法,它控制了Apache可以處理的最大并發(fā)連接數(shù)。
優(yōu)化靜態(tài)內(nèi)容
如果你的WEB服務(wù)器使用了大量靜態(tài)內(nèi)容或者你分別用兩個WEB服務(wù)器處理動態(tài)和靜態(tài)內(nèi)容,那么你現(xiàn)在的主要目標就是縮短服務(wù)器發(fā)送被請求內(nèi)容的響應(yīng)時
關(guān)鍵詞標簽:Apache,服務(wù)器
相關(guān)閱讀
熱門文章 ISAPI Rewrite實現(xiàn)IIS圖片防盜鏈 IIS6.0下配置MySQL+PHP5+Zend+phpMyAdmin 在Windows服務(wù)器上快速架設(shè)視頻編解碼器全攻略 win2000server IIS和tomcat5多站點配置
人氣排行 XAMPP配置出現(xiàn)403錯誤“Access forbidden!”的解決辦法 WIN2003 IIS6.0+PHP+ASP+MYSQL優(yōu)化配置 訪問網(wǎng)站403錯誤 Forbidden解決方法 如何從最大用戶并發(fā)數(shù)推算出系統(tǒng)最大用戶數(shù) Server Application Unavailable的解決辦法 報錯“HTTP/1.1 400 Bad Request”的處理方法 Windows Server 2003的Web接口 http 500內(nèi)部服務(wù)器錯誤的解決辦法(windows xp + IIS5.0)