apache的配置最佳化

來源:互聯網
上載者:User

【APACHE的工作方式】

prefork模式(預設)
這個多路處理模組(MPM)實現了一個非線程型的、預派生的web伺服器,它的工作方式類似於Apache 1.3。它適合於沒有安全執行緒庫,需要避免線程相容性問題的系統。它是要求將每個請求相互獨立的情況下最好的MPM,這樣若一個請求出現問題就不會影響到其他請求。

這個MPM具有很強的自我調節能力,只需要很少的配置指令調整。最重要的是將MaxClients設定為一個足夠大的數值以處理潛在的請求高峰,同時又不能太大,以致需要使用的記憶體超出實體記憶體的大小。

worker模式
此多路處理模組(MPM)使網路伺服器支援混合的多線程多進程。由於使用線程來處理請求,所以可以處理海量請求,而系統資源的開銷小於基於進程的MPM。但是,它也使用了多進程,每個進程又有多個線程,以獲得基於進程的MPM的穩定性。

【apache配置參數備忘】
1、KeepAlive On/Off
 
 KeepAlive指的是保持串連活躍,類似於Mysql的永久串連。換一句話說,如果將KeepAlive設定為On,那麼來自同一用戶端的請求就不
需要再一次串連,避免每次請求都要建立一個串連而加重伺服器的負擔。一般情況下,圖片較多的網站應該把KeepAlive設為On。

2、KeepAliveTimeOut number
  如果第二次請求和第一次請求之間超過KeepAliveTimeOut的時間的話,第一次串連就會中斷,再建立第二個串連。它的設定一般考慮圖片或者JS等檔案兩次請求間隔,我的設定經驗為3-5秒。

3、MaxKeepAliveRequests 100
  一次串連可以進行的HTTP請求的最大請求次數。將其值設為0將支援在一次串連內進行無限次的傳輸請求。事實上沒有客戶程式在一次串連中請求太多的頁面,通常達不到這個上限就完成串連了。

4、StartServers        10
  設定伺服器啟動時建立的子進程數量。因為子進程數量動態取決於負載的輕重,所有一般沒有必要調整這個參數。

5、MinSpareServers     10
 
 設定空閑子進程的最小數量。所謂空閑子進程是指沒有正在處理請求的子進程。如果當前空閑子進程數少於MinSpareServers
,那麼Apache將以最大每秒一個的速度產生新的子進程。只有在非常繁忙機器上才需要調整這個參數。將此參數設的太大通常是一個壞主意。

6、MaxSpareThreads     75
 
 設定空閑子進程的最大數量。如果當前有超過MaxSpareServers數量的空閑子進程,那麼父進程將殺死多餘的子進程。只有在非常繁忙機器上才需
要調整這個參數。將此參數設的太大通常是一個壞主意。如果你將該指令的值設定為比MinSpareServers小,Apache將會自動將其修改成
”MinSpareServers+1″。

7、ServerLimit       2000
  伺服器允許配置的進程數上限。只有在你需要將MaxClients設定成高於預設值256的時候才需要使用。要將此指令的值保持和MaxClients一樣。修改此指令的值必須完全停止服務後再啟動才會生效,以restart方式重啟動將不會生效。

8、MaxClients        256
 
 用於伺服用戶端請求的最大請求數量(最大子進程數),任何超過MaxClients限制的請求都將進入等候隊列。預設值是256,如果要提高這個值必須
同時提高ServerLimit的值。筆者建議將初始值設為(以Mb為單位的最大實體記憶體/2),然後根據負載情況進行動態調整。比如一台4G記憶體的機
器,那麼初始值就是4000/2=2000。

9、MaxRequestsPerChild  0
 
 apache.exe進程包括一個是父進程、一個是子進程,父進程接到訪問請求後,將請求交由子進程處理。MaxRequestsPerChild這個
指令設定一個獨立的子進程將能處理的請求數量。在處理“MaxRequestsPerChild
數字”個請求之後,子進程將會被父進程終止,這時候子進程佔用的記憶體就會釋放,如果再有訪問請求,父進程會重新產生子進程進行處理。  如果
MaxRequestsPerChild預設設為0(無限)或較大的數字(例如10000以上)可以使每個子進程處理更多的請求,不會因為不斷終止、啟動
子進程降低訪問效率,但MaxRequestsPerChild設定為0時,如果佔用了200~300M記憶體,即使負載下來時佔用的記憶體也不會減少。記憶體
較大的伺服器可以設定為0或較大的數字。記憶體較小的伺服器不妨設定成30、50、100,以防記憶體溢出。所以一般情況下,如果你探索服務器的記憶體直線上升,建議修改該參數試試。注意,如果子進程有記憶體流失問題,這個參數設定為非0值可以回收子進程造成的記憶體流失。

【apache的Rewrite】
1、是否支援使用.htaccess檔案來定義或者修改apache的設定,是否支援目錄列表

<Directory />
    Options indexes FollowSymLinks
    AllowOverride All
</Directory> 2、rewrite 配置
RewriteEngine on
RewriteCond $1 !^(index/.php|images|robots/.txt) #定義重寫發生的條件 
RewriteRule ^(.*)$ /index.php/$1 [L] 
RewriteLog D:/lib/rewrite.log #設定rewrite記錄檔,主要用來rewrite調試
RewriteLogLevel 3 #設定rewrite記錄檔記錄的等級,主要用來rewrite調試

【apache的

Gzip功能】
gzip可以級大的加速網站.有時壓縮比率高到80%,近來測試了一下,最少都有40%以上,還是相當不錯的.在Apache2之後的版本,模組名不叫gzip,而叫mod_deflate

如果要開啟gzip的話,一定要開啟下面二個模組.
LoadModule headers_module modules/mod_headers.so
LoadModule deflate_module modules/mod_deflate.so

設定壓縮比率,取值範圍在 1(最低) 到 9(最高)之間,不建議設定太高,雖然有很高的壓縮率,但是佔用更多的CPU資源.
DeflateCompressionLevel 3
AddOutputFilter DEFLATE html xml php js css
<Location />
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4/.0[678] no-gzip
BrowserMatch /bMSIE !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI //.(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary

Header append Vary User-Agent env=!dont-vary #對代理的設定
</Location>

下面二個測試網站

http://www.whatsmyip.org/mod_gzip_test/

http://www.gidnetwork.com/tools/gzip-test.php

測試資料對css
Original Size: 44 KB
Gzipped Size: 10 KB
Data Savings: 77.27%

測試資料js
Original Size: 6 KB
Gzipped Size: 2 KB
Data Savings: 66.67%

測試資料php
Original Size: 62 KB
Gzipped Size: 15 KB
Data Savings: 75.81%

上面只是隨機拿的幾個資料,看的出來,使用了gzip壓縮後檔案小多了.

另外講一下,有關squid對gzip的處理

squid中,對同一個URL只保留一份緩衝。對於如果不同browser(是否支援壓縮)如果頻繁交替訪問,例如:對某個cache住的目標,一個
http/1.0請求可能會導致squid強制更新其緩衝。但接下來的另一個http/1.1請求又會導致squid再次更新緩衝。這樣那squid緩衝
資料就要頻繁更新,這就極大的降低了cache命中率。
不過還好,現實環境中不支援壓縮的browser畢竟是很少的情況,所以對於快取命中率的降低很有限.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.