標籤:type 伺服器 模式 uid 進程 conf 流量 pre level
1)調整設定檔的配置項的值(httpd.conf)
Timeout 60 #建議設定該值比較小,有利於快速釋放串連。
KeepAlive Off #系統前端有安裝squid,則必須要開啟;否則處理動態內容多,則關閉,或處理靜態資源多,也許開啟。
MaxKeepAliveRequests 100
KeepAliveTimeout 15 #KeepAlive逾時時間,沒有指定該值,預設使用Timeout,否則使用該值。
配置工作模式1:prefork.c
<IfModule prefork.c>#多個子進程、每個子進程有1個線程,在某個時間點只能維持1個串連,效率高,但耗費記憶體
StartServers 5#啟動時建立的子進程數量<20 20~50 50~100
MinSpareServers 5#空閑子進程的最小數量預設5個 數量不夠會被建立
MaxSpareServers 10#空閑子進程的最大數量預設10個 多餘的進程會被關閉
ServerLimit 1024#apache中允許客服端請求串連的數量極限值 最大20000
MaxClients 768#允許客服端請求串連的數量 預設256 MaxClients 與ServerLimit必須同時增大 ServerLimit項必須放在MaxClients項前
MaxRequestsPerChild 0#每個子進程在其聲明周期中,能夠處理請求的數量,最大為10000 0 子進程不會結束 超過10000,多的子進程會被結束
</IfModule>
將MaxRequestsPerChild設定成非零值有兩個好處:
1)可以防止(偶然的)記憶體流失無限進行,從而耗盡記憶體。
2)給進程一個有限壽命,從而有助於當伺服器負載減輕的時候減少活動進程的數量。
對於KeepAlive連結,只有第一個請求會被計數。事實上,它改變了每個子進程限制最大連結數量的行為。
ThreadLimit >= ThreadsPerChild
MaxClients <= ServerLimit * ThreadsPerChild 必須是ThreadsPerChild的倍數 (2048 <= 25*25)
MaxSpareThreads >= MinSpareThreads+ThreadsPerChild(500 >= 25+25)
配置工作模式2: worker.c
<IfModule worker.c>#多個子進程、每個子進程有多個線程,在某個時間點只能維持1個串連,不耗費記憶體,適合高Cellular Data Package器,單個線程崩潰會引起同一進程中的其他線程崩潰
StartServers 3#啟動時建立的子進程數量
MinSpareThreads 25#空閑子進程的最小數量預設5個 數量不夠會被建立
MaxSpareThreads 75 #空閑子進程的最大數量 多餘的進程會被關閉 MaxSpareThreads>=MinSpareThreads+ThreadsPerChild
ServerLimit 25#apache中允許客服端請求串連的數量極限值 最大20000
MaxClients 150#允許客服端請求串連的數量 預設256 MaxClients 與ServerLimit必須同時增大 MaxClients<=ServerLimit*ThreadsPerChild
ThreadsPerChild 25#每個子進程建立常駐執行的線程數 預設100~500 最大值20000 與ThreadLimit必須同時增大
ThreadLimit 200#每個子進程可配置的線程數最大值ThreadLimit>=ThreadsPerChild
MaxRequestsPerChild 0#每個子進程在其聲明周期中,能夠處理最大請求的數量,最大為3000 0 子進程不會結束 超過10000,多的子進程會被結束
</IfModule>
設定到期時間
<IfModule expires_module.c>
ExpiresAction ON
ExpiresDefault "access plus 12 month"
ExpiresByType "text/html access plus 12 month"
</IfModule>
開啟gzip壓縮
<IfModule mod_deflate.c>
DeflateCompressionLevel 7
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php
AddOutputFilter DEFLATE css js
</IfModule>
apache效能最佳化參考