prefork模式(默認(rèn))
這個(gè)多路處理模塊(MPM)實(shí)現(xiàn)了一個(gè)非線(xiàn)程型的、預(yù)派生的web服務(wù)器,它的工作方式類(lèi)似于Apache 1.3。它適合于沒(méi)有線(xiàn)程?全庫(kù),需要避免線(xiàn)程兼容性問(wèn)題的系統(tǒng)。它是要求將每個(gè)請(qǐng)求相互獨(dú)立的情況下最好的MPM,這樣若一個(gè)請(qǐng)求出現(xiàn)問(wèn)題就不會(huì)影響到其他請(qǐng)求。
這個(gè)MPM具有很強(qiáng)的自我調(diào)節(jié)能力,只需要很少的配置指令調(diào)整。最重要的是將MaxClients設(shè)置為一個(gè)足夠大的數(shù)值以處理潛在的請(qǐng)求高峰,同時(shí)又不能太大,以致需要使用的內(nèi)存超出物理內(nèi)存的大小。
worker模式
此多路處理模塊(MPM)使網(wǎng)絡(luò)服務(wù)器支持混合的多線(xiàn)程多進(jìn)程。由于使用線(xiàn)程來(lái)處理請(qǐng)求,所以可以處理海量請(qǐng)求,而系統(tǒng)資源的開(kāi)銷(xiāo)小于基于進(jìn)程的MPM。但是,它也使用了多進(jìn)程,每個(gè)進(jìn)程又有多個(gè)線(xiàn)程,以獲得基于進(jìn)程的MPM的穩(wěn)定性。
【apache配置參數(shù)備注】
1、KeepAlive On/Off
KeepAlive指的是保持連接活躍,類(lèi)似于Mysql的永久連接。換一句話(huà)說(shuō),如果將KeepAlive設(shè)置為On,那么來(lái)自同一客戶(hù)端的請(qǐng)求就不需要再一次連接,避免每次請(qǐng)求都要新建一個(gè)連接而加重服務(wù)器的負(fù)擔(dān)。一般情況下,圖片較多的網(wǎng)站應(yīng)該把KeepAlive設(shè)為On。
2、KeepAliveTimeOut number
如果第二次請(qǐng)求和第一次請(qǐng)求之間超過(guò)KeepAliveTimeOut的時(shí)間的話(huà),第一次連接就會(huì)中斷,再新建第二個(gè)連接。它的設(shè)置一般考慮圖片或者JS等文件兩次請(qǐng)求間隔,我的設(shè)置經(jīng)驗(yàn)為3-5秒。
3、MaxKeepAliveRequests 100
一次連接可以進(jìn)行的HTTP請(qǐng)求的最大請(qǐng)求次數(shù)。將其值設(shè)為0將支持在一次連接內(nèi)進(jìn)行無(wú)限次的傳輸請(qǐng)求。事實(shí)上沒(méi)有客戶(hù)程序在一次連接中請(qǐng)求太多的頁(yè)面,通常達(dá)不到這個(gè)上限就完成連接了。
4、StartServers 10
設(shè)置服務(wù)器啟動(dòng)時(shí)建立的子進(jìn)程數(shù)量。因?yàn)樽舆M(jìn)程數(shù)量動(dòng)態(tài)的取決于負(fù)載的輕重,所有一般沒(méi)有必要調(diào)整這個(gè)參數(shù)。
5、MinSpareServers 10
設(shè)置空閑子進(jìn)程的最小數(shù)量。所謂空閑子進(jìn)程是指沒(méi)有正在處理請(qǐng)求的子進(jìn)程。如果當(dāng)前空閑子進(jìn)程數(shù)少于MinSpareServers ,那么Apache將以最大每秒一個(gè)的速度產(chǎn)生新的子進(jìn)程。只有在非常繁忙機(jī)器上才需要調(diào)整這個(gè)參數(shù)。將此參數(shù)設(shè)的太大通常是一個(gè)壞主意。
6、MaxSpareThreads 75
設(shè)置空閑子進(jìn)程的最大數(shù)量。如果當(dāng)前有超過(guò)MaxSpareServers數(shù)量的空閑子進(jìn)程,那么父進(jìn)程將殺死多余的子進(jìn)程。只有在非常繁忙機(jī)器上才需要調(diào)整這個(gè)參數(shù)。將此參數(shù)設(shè)的太大通常是一個(gè)壞主意。如果你將該指令的值設(shè)置為比MinSpareServers小,Apache將會(huì)自動(dòng)將其修改成”MinSpareServers+1″。
7、ServerLimit 2000
服務(wù)器允許配置的進(jìn)程數(shù)上限。只有在你需要將MaxClients設(shè)置成高于默認(rèn)值256的時(shí)候才需要使用。要將此指令的值保持和MaxClients一樣。修改此指令的值必須完全停止服務(wù)后再啟動(dòng)才能生效,以restart方式重啟動(dòng)將不會(huì)生效。
8、MaxClients 256
用于伺服客戶(hù)端請(qǐng)求的最大請(qǐng)求數(shù)量(最大子進(jìn)程數(shù)),任何超過(guò)MaxClients限制的請(qǐng)求都將進(jìn)入等候隊(duì)列。默認(rèn)值是256,如果要提高這個(gè)值必須同時(shí)提高ServerLimit的值。筆者建議將初始值設(shè)為(以Mb為單位的最大物理內(nèi)存/2),然后根據(jù)負(fù)載情況進(jìn)行動(dòng)態(tài)調(diào)整。比如一臺(tái)4G內(nèi)存的機(jī)器,那么初始值就是4000/2=2000。
9、MaxRequestsPerChild 0
apache.exe進(jìn)程包括一個(gè)是父進(jìn)程、一個(gè)是子進(jìn)程,父進(jìn)程接到訪(fǎng)問(wèn)請(qǐng)求后,將請(qǐng)求交由子進(jìn)程處理。MaxRequestsPerChild這個(gè)指令設(shè)定一個(gè)獨(dú)立的子進(jìn)程將能處理的請(qǐng)求數(shù)量。在處理“MaxRequestsPerChild 數(shù)字”個(gè)請(qǐng)求之后,子進(jìn)程將會(huì)被父進(jìn)程終止,這時(shí)候子進(jìn)程占用的內(nèi)存就會(huì)釋放,如果再有訪(fǎng)問(wèn)請(qǐng)求,父進(jìn)程會(huì)重新產(chǎn)生子進(jìn)程進(jìn)行處理?! ∪绻鸐axRequestsPerChild缺省設(shè)為0(無(wú)限)或較大的數(shù)字(例如10000以上)可以使每個(gè)子進(jìn)程處理更多的請(qǐng)求,不會(huì)因?yàn)椴粩嘟K止、啟動(dòng)子進(jìn)程降低訪(fǎng)問(wèn)效率,但MaxRequestsPerChild設(shè)置為0時(shí),如果占用了200~300M內(nèi)存,即使負(fù)載下來(lái)時(shí)占用的內(nèi)存也不會(huì)減少。內(nèi)存較大的服務(wù)器可以設(shè)置為0或較大的數(shù)字。內(nèi)存較小的服務(wù)器不妨設(shè)置成30、50、100,以防內(nèi)存溢出。所以一般情況下,如果你發(fā)現(xiàn)服務(wù)器的內(nèi)存直線(xiàn)上升,建議修改該參數(shù)試試。
【apache的Rewrite】
1、是否支持使用.htaccess文件來(lái)定義或者修改apache的設(shè)置,是否支持目錄列表
<Directory />
Options indexes FollowSymLinks
AllowOverride All
</Directory>
2、rewrite 配置
RewriteEngine on
RewriteCond $1 !^(index.php|images|robots.txt) #定義重寫(xiě)發(fā)生的條件
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteLog D:/lib/rewrite.log #設(shè)置rewrite日志文件,主要用來(lái)rewrite調(diào)試
RewriteLogLevel 3 #設(shè)置rewrite日志文件記錄的等級(jí),主要用來(lái)rewrite調(diào)試
【apache的Gzip功能】
gzip可以級(jí)大的加速網(wǎng)站.有時(shí)壓縮比率高到80%,近來(lái)測(cè)試了一下,最少都有40%以上,還是相當(dāng)不錯(cuò)的.在Apache2之后的版本,模塊名不叫g(shù)zip,而叫mod_deflate
如果要開(kāi)啟gzip的話(huà),一定要打開(kāi)下面二個(gè)模塊.
LoadModule headers_module modules/mod_headers.so
LoadModule deflate_module modules/mod_deflate.so
設(shè)置壓縮比率,取值范圍在 1(最低) 到 9(最高)之間,不建議設(shè)置太高,雖然有很高的壓縮率,但是占用更多的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 MSIE !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 #對(duì)代理的設(shè)置
</Location>
設(shè)置好這些后還好注意定時(shí)清理temp 和logs 目錄,然后就可以減少CPU占用了!提高訪(fǎng)問(wèn)速度!