apache是經常用到的一個處理靜態頁面的服務器,有時候可能需要對它的配置文件進行設置優化,這裏整理一下:
(以下參數在conf/httpd.conf中設置)
KeepAlive --是否允許持續連接
MaxKeepAliveRequests --允許的持續連接的最大數
KeepAliveTimeout --持續連接在沒有請求多少秒後切斷
StartServers --最初啓動時啓動多少個服務器進程
MinSpareServers --空閒服務器進程的最小數
MaxSpareServers --空閒服務器進程的最大數
MaxClients --同時處理的請求數(最重要的參數,要少於ServerLimit)
MaxRequestsPerChild --每個子進程處理的最大請求數
簡單說明:
prefork控制進程在最初建立“StartServers”個子進程後,爲了滿足MinSpareServers設置的需要創建一個進程,等待一秒鐘,繼續創建兩個,再等待一秒鐘,繼續創建四個……如此按指數級增加創建的進程數,最多達到每秒32個,直到滿足MinSpareServers設置的值爲止。這種模式可以不必在請求到來時再產生新的進程,從而減小了系統開銷以增加性能。
MaxSpareServers設置了最大的空閒進程數,如果空閒進程數大於這個值,Apache會自動kill掉一些多餘進程。這個值不要設得過大,但如果設的值比MinSpareServers小,Apache會自動把其調整爲MinSpareServers+1。如果站點負載較大,可考慮同時加大MinSpareServers和 MaxSpareServers。
MaxRequestsPerChild設置的是每個子進程可處理的請求數。每個子進程在處理了 “MaxRequestsPerChild”個請求後將自動銷燬。0意味着無限,即子進程永不銷燬。雖然缺省設爲0可以使每個子進程處理更多的請求,但如果設成非零值也有兩點重要的好處:1、可防止意外的內存泄漏。2、在服務器負載下降的時侯會自動減少子進程數。下面是個例子:
<IfModuleprefork.c>
ServerLimit 2000
StartServers 10
MinSpareServers 10
MaxSpareServers 15
MaxClients 1000
MaxRequestsPerChild 2048
</IfModule>