談談Apache的最佳化

來源:互聯網
上載者:User
可以任意 轉載,但轉載時必須標明原作者charlee、原始連結http://tech.idv2.com/2007/08/09/about-apache-perf-tuning/以及本聲明。

今天說說Apache的最佳化。為什麼要最佳化?因為伺服器資源不夠用。資源有很多方面,但根據木桶理論,只要有一種資源不夠用,整個伺服器的效能就會受到影響(所謂瓶頸)。

伺服器資源

那麼伺服器的資源套件括哪些?對於網站來說主要是CPUTCP串連數這兩者。 CPU表現在任務數上,在Linux下使用平均負載(loadavg)來衡量。可通過以下命令來查看(參考這篇文章):

cat /proc/loadavg

對於單CPU的伺服器,loadavg高於1,表明任務隊列出現了等待,CPU忙不過來了。超過2以上就會明顯感到效能降低了。

TCP串連數可通過以下命令查看:

netstat -ant | grep :80 | wc -l 

如果要即時監控伺服器資源,可參考OpenNMS項目。

注1:記憶體不算,低廉的價格使得網站伺服器很少有因為記憶體不夠而down掉的。
注2:CPU%是瞬時的CPU使用率,通常無法反映出整體負載。

Apache配置命令

Apache在資源方面的配置命令主要有以下幾條。

KeepAlive 是否允許持續串連
MaxKeepAliveRequests 允許的持續串連的最大數
KeepAliveTimeout 持續串連在沒有請求多少秒後切斷
StartServers 最初啟動時啟動多少個伺服器處理序
MinSpareServers 空閑伺服器處理序的最小數
MaxSpareServers 空閑伺服器處理序的最大數
MaxRequestsPerChild 每個子進程處理的最大請求數

KeepAlive

前三個KeepAlive相關的指令用來設定持續串連。通常都是每個HTTP請求對應一個TCP串連,但對於一個包含許多圖片的網頁來說,用戶端會在瞬間發出多個HTTP請求,此時多次建立TCP串連會大大降低響應速度。此時通過持續串連,可以允許使用者在一個TCP串連中發出多個HTTP請求,減少TCP串連建立次數,提高響應速度。

這種情況下,應當通過access_log統計出連續HTTP請求出現的次數、間隔時間、訪問量,以確定 MaxKeepAliveRequests 和 KeepAliveTimeout 的值。 KeepAliveTimeout 太小發揮不了持續串連的作用;太大了,持續串連遲遲不斷,浪費TCP串連數不說,更糟糕的是系統中的 httpd 進程數目會因此不斷增加,使得系統負載升高,甚至會導致伺服器失去響應。

但是在處理動態網頁請求時,由於使用者很少會瞬間請求多個動態網頁(一般都是開啟頁面之後閱讀好半天才點下一頁),此時開啟KeepAlive無異於浪費TCP串連數。

結論就是,放動態網頁的就 KeepAlive Off 以提高輸送量,放靜態內容片、js代碼等就 KeepAlive On 以減少TCP串連建立次數。

但一個Apache只能有一種 KeepAlive 設定,怎麼辦?很簡單,弄兩台伺服器,一個專門放指令碼,一個專門放圖片。

伺服器處理序數

再說說下面的 StartServers、MinSpareServers、MaxSpareServers。 StartServers基本不用修改,因為Apache會自動調節子進程數。 MinSpareServers和MaxSpareServers是空閑子進程數目,何為空白閑子進程?假設某一時刻系統中共有30個httpd進程,其中一個是父進程,20個在處理請求,那麼空閑子進程數就是9個。

空閑進程少了,大量的突發請求會使伺服器疲於進程建立,降低效率;而太多反而會增加系統進程數,增大系統負載。

實際上,預設值已足夠處理一般的突發請求,所以除非是流量特別特別巨大的網站,否則不要修改這些設定。

就算流量特別特別大,也是通過Server Load Balancer系統來降低每台伺服器的訪問量,不會修改這幾個值。

MaxRequestsPerChild

這個值設定子進程在處理多少個請求之後自動結束。這個選項是用來防止進程由於記憶體流失等使用記憶體過多。一般預設值即可。

總結

說來說去其實最重要的還是 KeepAlive 的設定,而效能調節也就是調整 KeepAlive、KeepAliveTimeout 值。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.